Я создал программу на C, чтобы найти целое число, которое является суммой двух полупростых чисел.Умноженные простые числа должны быть разными.(Я изобразил в выходной).Вот код
#include<stdio.h>
main()
{
int i, j, k, n=0, l=0, c, d, x, y, t, prime[200], a[200], count=0;
repeat:
scanf("%d", &t);
if(t>1 && t<200)
{
goto repeat;
}
for(i=0; i<t; i++)
{
repeat0:
scanf("%d", &a[i]);
if(a[i]<1 && a[i]>200)
goto repeat0;
}
for(i=0; i<t; i++)
{
for(j=2; j<a[i]; j++)
{
for(k=2; k<j; k++)
{
if(j%k==0)
{
n++;
}
}
if(n==0)
{
prime[l]=j;
l++;
}
n=0;
}
for(c=0; c<l; c++)
{
for(d=0; d<l; d++)
{
for(x=0; x<l; x++)
{
for(y=0; y<l; y++)
{
if(a[i]==(prime[c]*prime[d])+(prime[x]*prime[y]) && prime[c]!=prime[d] && prime[x]!=prime[y])
count++;
}
}
}
}
if(count>0)
printf("YES\n");
else printf("NO\n");
count=0;
}
}
А теперь я даю ввод
3
30
45
60
Выходное значение равно
ДА
// 15 + 15 = 3 * 5 (Эти два числа должны быть разными, как определено в полупростых числах, то есть 3 и5, не обязательно для 15 и 15) + 3 * 5
ДА
// 5 * 7 + 2 * 5
НЕТ
И еслиТеперь я публикую
if (a [i] == (простое число [c] * простое число [d]) + (простое число [x] * простое число [y]) && c! = D && x! = Y)
вместо
if (a [i] == (prime [c] * prime [d]) + (prime [x] * prime [y]) && prime [c]! = простое число [d] && простое число [x]! = простое число [y])
и введите значение
3
30
45
62
я получаю вывод
ДА
ДА
ДА
Я не являюсьв состоянии понять различные выходные данные, так как логика кода остается прежней