#c #loops #primes #goldbach-conjecture
#c #циклы #простые числа #гольдбах-гипотеза
Вопрос:
Я только учусь программированию, и моей задачей было написать код на C , который для заданного четного числа возвращал бы это число как сумму двух простых чисел. Ранее мне удавалось написать код, проверяющий, является ли число простым или нет, но когда я попытался применить это, моя программа дала сбой.
#include <iostream>
using namespace std;
int main()
{
int a,s1=0,s2=0;
cout<<"Enter any even natural number greater than 3."<<endl;
cin>>a;
for(int i=0;i<a; i)
{
for(int k=2;k<=i; k)
{
if(i%k!=0) s1 ;
}
for(int t=2;t<=(a-i); t)
{
if((a-i)%t!=0) s2 ;
}
if(s1==i-2 amp;amp; s2==a-i-2) cout<<a<<"="<<i<<" "<<a-i<<endl;
}
return 0;
}
Ответ №1:
Требуется только одно небольшое изменение, которое я вижу, вам нужно установить s1 и s2 равными нулю внутри вашего цикла, а не только один раз в начале main
.
for(int i=0;i<a; i)
{
s1=s2=0;
...
Теперь (если вам так хочется) перепишите код, используя вызываемую функцию is_prime
. Эта функция принимает один целочисленный параметр и возвращает true, если целое число является простым (и false, если нет). Если бы вы написали такую функцию в первую очередь, вы бы не совершили ошибку, которую совершили.
Разбиение сложных задач на более мелкие путем написания функций является абсолютно необходимым навыком в программировании.