|
发表于 2021-7-6 00:17:39
|
显示全部楼层
- #include<stdio.h>
- int main(void)
- {
- int num,num1,i;
- printf("请输入一个数:");
- scanf("%d",&num1);
- num = num1;
- for(i = 2;i < num/2;i++)
- { printf ("计算1开始,num=%d\n",num);
- printf ("计算2开始,num=%d\n",num/2);
- printf ("计算3开始,i=%d\n",i);
- num = num%i;
- printf ("计算4开始,num=%d\n",num);
- printf ("计算5开始,num=%d\n",num/2);
- printf ("计算6开始,i=%d\n",i);
- /*
- while(num == 0)
- {
- printf ("num=%d\n",num);
- break;
- }
- */
- }
- if(num)
- {
- printf ("now1,num=%d\n",num);
- printf("%d是一个素数",num1);
- }
- else
- {
- printf ("now2,num=%d\n",num);
- printf("%d不是一个素数",num1);
- }
-
- }
复制代码
自己添加 printf 打印num ,i 的值,就会发现问题。计算1,2,3都没问题,计算4开始,num==9,9%2==1;现在的num被赋值为1,而后,num/2变成了0,也就是第五步计算,第六步计算,i 还是等于2,返回 for 循环,条件判断,2 < 0(刚已说了第五步计算,现在为0),为假,退出循环。下面的 while 不会循环,第四步已计算出 num==1,所以,if (1)为真,打印9是一个素数。
|
|