почему моя прога не может распознать пронический номер? - PullRequest
0 голосов
/ 21 сентября 2018

Почему моя программа не может распознать проническое число?

int main()
{
    int n , i , c;
    printf("hello this prog can recognize pronic number\n\n");
    printf("please enter an integer:\n");
    scanf("%d" , &n);
    for (i=1 ; i<=n ; i++)
    {
        c = n / i ;
    }

    if (c==i+1)
    {
        printf("this number is  a pronic number");
    }
    else
    {
        printf("this number is NOT pronic number");
    }

    return 0;
}

1 Ответ

0 голосов
/ 21 сентября 2018

Вы оцениваете значение c только после окончания цикла.Вы должны проверить c на ходу и выйти из цикла, если вы обнаружите, что число является проникающим числом.

Обратите внимание, что вы выполняете целочисленное деление, поэтому вы можете найти c==i+1, но c*i не будет равно n:

int pronic = 0;
for (i = 1; i <= n; i++) {
    if (i * (i + 1) == n) {
        printf("%d is a pronic number.\n", n);
        pronic = 1;
        break;
    }
}

if (!pronic) {
    printf("%d is not a pronic number\n", n);
}
...