Представление числа в виде суммы двух простых чисел - PullRequest
0 голосов
/ 03 апреля 2020

Что не так с моим кодом? Почему я не получаю вывод? Я тренируюсь для встраиваемой системы.

снимок экрана с запущенным кодом

#include <stdio.h>

int checkP (int n)
{
    for (int i=2; i<n; i++)
        if(n%i==0)
            return (0);
    return (1);
}

int nextP (int n)
{
    do
     n++;
    while (!checkP(n));
    return n;
}

int main (void)
{
    int x = 34;  //user input
    for (int i = 2; i < x - 1; i = nextP(i))
    {
        if (checkP(x - 1)) {
            printf ("\n %d + %d", i, x-1);
        }
    }
}

1 Ответ

1 голос
/ 03 апреля 2020

x-1 всегда 33, вы хотите использовать x-i, поэтому сумма i и x-i равна x.

if должно выглядеть следующим образом что:

if (checkP(x - i)) {
     printf ("\n %d + %d", i, x-i);
}

https://ideone.com/jAIfa2

Выход:

 3 + 31
 5 + 29
 11 + 23
 17 + 17
 23 + 11
 29 + 5
 31 + 3
...