Advertisement
JosepRivaille

P22467: Primers perfectes

Apr 4th, 2015
2,230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.72 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. bool primer(int a) {
  6.     if (a <= 1) return false;
  7.     for (int i = 2; i*i <= a; ++i) {
  8.         if (a%i == 0) return false;
  9.     }
  10.     return true;
  11. }
  12.  
  13. bool es_primer_perfecte(int n) {
  14.     if (not primer(n)) return false;
  15.     int resultat = 0;
  16.     int digits = 0;
  17.     while (n > 0) {
  18.         resultat = resultat + n%10;
  19.         n = n/10;
  20.         ++digits;
  21.     }
  22.     bool resultat_primer = primer(resultat);
  23.     if (resultat_primer && digits == 1) return true;
  24.     else if (resultat_primer) return es_primer_perfecte(resultat);
  25.     else return false;
  26. }
  27.  
  28.  
  29. //Pre: Llegeix un natural n
  30. //Post: Retorna si totes les xifres son nombres primers
  31. int main() {
  32.     int n;
  33.     while (cin >> n) {
  34.         cout << es_primer_perfecte(n) << endl;
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement