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

Bài đăng phổ biến từ blog này

Đổi chỗ chữ số đầu tiên và chữ số cuối cùng của một số

Chuyển đơn vị đo nhiệt độ C và F

Tìm số đẹp (lộc phát)