没有任何语句的for循环

Ab *_* Be 1 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;
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 5

它不需要主体,目的只是增加d直到条件n % d != 0为假(即何时n % d == 0为真)。d在这个过程中它没有做任何事情。

在循环结束时,d将是 的最低因子n。如果d == n这意味着n除了自身和 1(未检查,因为循环从 开始d = 2)之外没有任何其他因素,即它是素数。