Проверить утверждение о том любое чётное число можно представить в виде суммы двух простых - C (СИ)
Формулировка задачи:
Проверить утверждение о том любое чётное число можно представить в виде суммы двух простых.Проверять до 50.
Прошу подкинуть идейку как решить.
зависает на 20
всё готово
Есть одна идея необходимо половину данного числа увеличивать до тех пор пока оно не станет простым, а второе находим вычитанием,только не могу реализовать это в коде
#include <stdio.h> int main() { int n,a,f,g=0,i,r,b; for(n=8;n<=50;n+=2) { printf("%d=",n); f=n/2; a=f; while(g==0) { for(i=2;i<=a&&a%i!=0;i++); if(i<=a/2) g=0; else g=1; if(g==0) { a++; } else { b=n-a; for(r=2;r<=b&&b%r!=0;r++); if(r<=b/2) g=0; else g=1; } if(g==1) printf("%d+%d\n",a,b); } g=0; } return 0; }
#include <stdio.h> int main() { int n,a,f,g=0,i,r,b,d=0; for(n=4;n<=50;n+=2) { printf("%d=",n); f=n/2; a=f; while(g==0) { for(i=2;i<=a&&a%i!=0;i++); if(i<=a/2) g=0; else g=1; if(g==0) { a++; } else { b=n-a; for(r=2;r<=b&&b%r!=0;r++); if(r<=b/2) d=1; else g=1; } if(d==1) { a++; g=0; d=0; } if(g==1) { printf("%d+%d\n",a,b); } } g=0; d=0; } return 0; }
может кому пригодится
Решение задачи: «Проверить утверждение о том любое чётное число можно представить в виде суммы двух простых»
textual
Листинг программы
int goldbah(unsigned long int n,unsigned long int &n1,unsigned long int &n2) { unsigned long int halfn=n/2+1; int r=0; for (n1=2; n1<halfn; n1++) for (n2=n1; n2<n; n2++) if (n1+n2==n && simple(n1) && simple(n2)) { printf ("\n%lu=%lu+%lu",n,n1,n2); r++; } return r; }
Объяснение кода листинга программы
В этом коде:
- Инициализируются три переменные:
n
,n1
иn2
. Переменнаяn
содержит число, которое нужно представить в виде суммы двух простых чисел. Переменныеn1
иn2
используются для поиска этих чисел. - Вычисляется значение переменной
halfn
как половины числаn
, увеличенной на единицу. - Переменная
r
инициализируется нулём и используется для подсчёта количества найденных комбинаций. - В цикле
for
перебираются все числа от 2 доhalfn
. - Вложенный в этот цикл
for
перебирает все числа от текущего значенияn1
доn
, но не включаяn
. - С помощью условного оператора
if
проверяется, является ли суммаn1
иn2
равнойn
и являются ли оба числа простыми. - Если условие выполняется, то с помощью функции
printf
выводится сообщение, содержащее числаn
,n1
иn2
, а также увеличивается значение переменнойr
. - По завершении внутренних циклов выводится общее количество найденных комбинаций.
- Функция возвращает значение переменной
r
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д