


Программирование на с++ задача
Подпрограммы. Средства отладки.
Решить задачу, используя процедуру или функцию. Выбор обосновать. На при-мере полученной программы продемонстрировать умение:
1) назначать точку останова;
2) выполнить программу по шагам с заходом в процедуры и без захода;
3) определять значения переменных на конкретном шаге.
Дано четное число N>2. Проверить для него гипотезу Гольдбаха, состоящую в том, что каждое четное число представимо в виде суммы двух простых чисел.
for(i=N-2;i>2;i--){
if(test(i) && test(N-i))cout<<N<<"="<<i<<"+"<<N-i;
}
// где test - функция проверки простого числа
А прикольная проблема: Проблема Гольдбаха (гипотеза Гольдбаха, проблема Эйлера, бинарная проблема Гольдбаха) — утверждение о том, что любое чётное число, начиная с 4, можно представить в виде суммы двух простых чисел. Является открытой математической проблемой — по состоянию на 2023 год утверждение не доказано. В совокупности с гипотезой Римана включена в список проблем Гильберта под номером 8.
Я попробовал написать код.
А необходимость и отладку доделайте сами.
#include <iostream>
using namespace std;
bool prostoje(unsigned n)
{
for(unsigned c = 2; c < n; c++)
if(n % c == 0)
return false;
return true;
}
bool test(unsigned n)
{
unsigned n1,n2;
for(n1 = 1, n2 = 2; n1 + n2 <= n; n1++)
for(; n1 + n2 <= n; n2++)
// if( prostoje(n1) && prostoje(n2) )
if(n1 + n2 == n)
if( prostoje(n1) && prostoje(n2) ) // код переделан после замечаний.
return true;
return false;
}
int main()
{
unsigned N;
cin >> N;
if(N > 2 && (N % 2) == 0)
{
if(test(N))
cout << "Теория Гольдбаха верна." << endl;
else
cout << "Теория Гольдбаха не верна." << endl;
}
else
return 1;
return 0;
}