Là số nguyên tố, từng số là nguyên tố, tổng, tích là số chia hết cho 1 số bất kì và không chứa 1 số nhập từ bàn phím
Đề bài:
Hãy viết chương trình liệt kê tất cả các số tự
nhiên K thỏa mãn đồng thời những điều kiện dưới đây:
(i)
K là số có 5 chữ số;
(ii)
K là số nguyên tố;
(iii)
Mỗi chữ số của K cũng là các số nguyên tố;
(iv)
Tổng các chữ số của K là một số chia hết cho P (P được
nhập từ bàn phím);
(v)
Tích các chữ số của K là một số chia hết cho Q (Q được nhập từ bàn phím);
(vi)
Các chữ số của K không chứa số R (được nhập từ bàn phím).
Bài giải:
#include<iostream> #include<cmath> using namespace std; bool nto(int x){ if( x < 2) return false; for(int i = 2; i <= sqrt(x); i++){ if( x%i == 0 ) return false; } return true; } bool tungso(int n){ int a[100]; int i = 0; while( n > 0){ a[i] = n %10; n = n / 10; i++; } for(int j = 0 ; j < i; j ++){ if(!nto(a[j])) return false; } return true; } bool tongchia(int n, int x){ int tong = 0; while( n > 0){ int t = n % 10; tong = tong + t; n = n / 10; } if(tong%x == 0) return true; else return false; } bool tichchia(int n, int x){ int tich = 1; while( n > 0){ int t = n % 10; tich = tich * t; n = n / 10; } if(tich%x == 0) return true; else return false; } bool khacK(int n, int x){ int a[100]; int i = 0; while( n>0 ){ a[i] = n % 10; n = n / 10; i++; } for( int j = 0 ; j < i; j++){ if(a[j] == x) return false; } return true; } int main(){ int p , q , r; cin >> p; cin >> q; cin >> r; for(int i = 10000; i <= 99999; i++){ if(nto(i) && tungso(i) && tongchia(i,p) && tichchia(i,q) && khacK(i,r)) cout << i << endl; } }
Nhận xét
Đăng nhận xét