Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Программирование на с++ задача

Подпрограммы. Средства отладки.
Решить задачу, используя процедуру или функцию. Выбор обосновать. На при-мере полученной программы продемонстрировать умение:
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.

Аватар пользователя
Мудрец

Я попробовал написать код.
А необходимость и отладку доделайте сами.

123456789101112131415161718192021222324252627282930313233343536373839404142
 #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; 
}