该程序告诉给定的输入是否为素数,但是我不明白这里的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;
}
答案 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的因数,则它不是质数。如果没有其他因素,那是最重要的。