Проблема при написании программы гипотез Гольдбаха

#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, если нет). Если бы вы написали такую функцию в первую очередь, вы бы не совершили ошибку, которую совершили.

Разбиение сложных задач на более мелкие путем написания функций является абсолютно необходимым навыком в программировании.