没有任何声明的循环

时间:2018-12-17 22:53:08

标签: c for-loop

该程序告诉给定的输入是否为素数,但是我不明白这里的for循环到底是做什么的?它没有方括号,也没有语句。

int main(void)
{
    int n;

    printf("Enter an integer number (> 1): ");
    if (scanf("%d", &n) != 1 || n <= 1) {
        printf("Invalid input. Quit!\n");
        return -1;
    }

    int d;
    for (d = 2; n % d != 0; d++)
        ;

    if (d == n)
        printf("%d is prime\n", n);
    else
        printf("%d divides into %d\n", d, n);

    return 0;
}

2 个答案:

答案 0 :(得分:4)

不需要身体,目的只是增加d直到条件n % d != 0为假(即,n % d == 0为真)。在此过程中,d并没有采取任何措施。

在循环结束时,d将是n的最低系数。如果为d == n,则表示n除了自身和1之外没有其他任何因素(由于循环从d = 2开始,因此没有被检查),即素数。

答案 1 :(得分:0)

循环仍会检查条件n % d != 0,并在每个周期增加d。将n除以d而没有提醒时,d将不再增加,并且循环退出。因此,您有了d

然后您可以通过以下条件找到数字是否为质数:如果发现一个小于n的因数,则它不是质数。如果没有其他因素,那是最重要的。