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

Я только изучаю программирование, и моей задачей было написать код на 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 && 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. Эта функция принимает один целочисленный параметр и возвращает истину, если целое число является простым (и ложь, если нет). Если бы вы изначально написали такую ​​функцию, вы бы не сделали той ошибки, которую сделали.

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

Другие вопросы по тегам