C ведет себя по-разному для почти одного и того же кода - PullRequest
0 голосов
/ 14 октября 2018

Я создал программу на 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

я получаю вывод

ДА

ДА

ДА

Я не являюсьв состоянии понять различные выходные данные, так как логика кода остается прежней

...