Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- ////////////////////////////////
- bool IsPrimeNumber(int nNum);
- bool isPrime(int n);
- ////////////////////////////////
- int main()
- {
- setlocale(LC_ALL, "Rus");
- int nNum,
- a1,
- a2;
- bool found; // Flag
- /*
- for(int i = 4; i < 1000; i ++) // Проверка-печать ряда простых чисел
- {
- //a1 = IsPrimeNumber(i) ;
- a1 = isPrime(i);
- if(a1) cout << i << ", ";
- }
- return 0; */
- LC_01: cout << "Введите четное число, большее трех: " << endl; cin >> nNum;
- if (nNum <= 3 || nNum % 2 == 1) cout << "Введено неверное число!" << endl;
- else
- {
- a1 = 2,
- a2 = nNum - a1;
- found = 0; // Flag
- while(a1 <= a2)
- {
- if(IsPrimeNumber(a1) && IsPrimeNumber(a2))
- {
- found = 1;
- break;
- }
- a1 ++;
- a2 = nNum - a1;
- }
- if(found) cout << nNum << " = " << a1 << " + " << a2 << endl;
- else cout << "Не удалось найти два простых числа, сумма которых равна " << nNum << endl;
- goto LC_01;
- }
- return 0;
- }
- ////////////////////////////////////////////////////// Эта функция работает неверно!
- bool IsPrimeNumber(int nNum) //
- {
- for(int i = 2; i <= int(sqrt(nNum)); i++)
- {
- if(nNum % i == 0) return false;
- break;
- }
- return 1;
- }
- // функция проверяет - простое ли число n
- //////////////////////////////////////////////////////////////
- bool isPrime(int n) //
- {
- if(n > 1)
- {
- for(int i = 2; i < n; i++) // в цикле перебираем числа от 2 до n - 1
- {
- if (n % i == 0) return 0; // если n делится без остатка на i - возвращаем false (число не простое)
- }
- // если программа дошла до данного оператора, то возвращаем true (число простое) - проверка пройдена
- return 1;
- } return 0; // иначе возвращаем false (число не простое)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement