Advertisement
dllbridge

Untitled

May 13th, 2023
1,308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.57 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. #include <iostream>
  8. #include <cmath>
  9. using namespace std;
  10.  
  11.  
  12. ////////////////////////////////
  13.  
  14. bool IsPrimeNumber(int nNum);
  15.  
  16. bool isPrime(int n);
  17.  
  18.  
  19.  
  20.  
  21. ////////////////////////////////
  22. int main()
  23. {
  24.    
  25.    
  26.     setlocale(LC_ALL, "Rus");
  27.    
  28.     int   nNum,
  29.             a1,
  30.             a2;
  31.          
  32.     bool found;          // Flag
  33.    
  34.    
  35.     /*
  36.     for(int i = 4; i < 1000; i ++) //  Проверка-печать ряда простых чисел
  37.     {
  38.         //a1 = IsPrimeNumber(i) ;
  39.         a1 = isPrime(i);
  40.         if(a1) cout << i << ", ";
  41.    
  42.     }
  43.    
  44.     return 0; */
  45.    
  46. LC_01:                               cout << "Введите четное число, большее трех: "    << endl; cin >> nNum;
  47.     if (nNum <= 3 || nNum % 2 == 1)  cout << "Введено неверное число!"              << endl;
  48.     else
  49.     {
  50.         a1    =  2,
  51.         a2    =  nNum - a1;
  52.         found =  0;            // Flag
  53.        
  54.         while(a1 <= a2)
  55.         {
  56.             if(IsPrimeNumber(a1) && IsPrimeNumber(a2))
  57.             {
  58.                 found = 1;
  59.                 break;
  60.             }
  61.            
  62.             a1 ++;
  63.             a2 = nNum - a1;
  64.         }
  65.  
  66.         if(found)   cout << nNum << " = " << a1 << " + " << a2 << endl;
  67.         else        cout << "Не удалось найти два простых числа, сумма которых равна " << nNum << endl;
  68.         goto LC_01;
  69.     }
  70. return 0;  
  71. }
  72.  
  73.  
  74.  
  75. //////////////////////////////////////////////////////   Эта функция работает неверно!
  76. bool IsPrimeNumber(int nNum)                        //  
  77. {  
  78.    
  79.     for(int i = 2; i <= int(sqrt(nNum)); i++)
  80.     {
  81.         if(nNum % i == 0) return false;                    
  82.         break;
  83.     }
  84.    
  85. return 1;  
  86. }
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. // функция проверяет - простое ли число n
  94. //////////////////////////////////////////////////////////////
  95. bool isPrime(int n)                                         //
  96. {
  97.    
  98.     if(n > 1)
  99.     {
  100.                    
  101.         for(int i = 2; i < n; i++)                                      // в цикле перебираем числа от 2 до n - 1
  102.         {
  103.             if (n % i == 0) return 0;    // если n делится без остатка на i - возвращаем false (число не простое)
  104.         }      
  105.  
  106.               // если программа дошла до данного оператора, то возвращаем true (число простое) - проверка пройдена
  107.         return 1;
  108.     }   return 0;                                                     // иначе возвращаем false (число не простое)                    
  109. }
  110.  
  111.  
  112.  
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement