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