#include<stdio.h>
#include<math.h>
main()
{
int i,n,flag=0;
printf("请输入一个大于1的整数:");
scanf("%d",&n);
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
flag=1;
}
if(flag==0)
printf("%d是质数\n",n);
else
printf("%d不是质数\n",n);
flag是用来做最后的判断的,一个“标志”。如果输入的n除以任何一个非1的i值余数为零,则flag = 1,在程序的最后的if语句中,如果flag为0,则输出n是质数,否则输出n不是质数。
你可以再理一下程序的逻辑,很好明白。
要分析一个变量的作用,第一步先看它在哪里改变的:
flag初值是0;
在这里发生了改变,然后再去看改变的原因是什么是n%i==0成立,如果n%i==0成立说明了什么,说明了n有了i这个因数,说明了n不是质数了;
第二步,改变后的变量用在了什么地方:
用在了这里,如果flag没有发生改变就是0,也就是没有执行
这段语句里面的flag=1,所以它就是质数,所以这里执行
输出是质数,如果在这段语句里面发生了改变,flag变为了1,那么就执行
也就是输出不是质数;
点赞
扫一扫分享朋友圈
二维码
分享
你确定要删除这个问题吗?