萌新求助 求大佬解释一下代码的意思
#include <stdio.h>int main()
{
int count = 2; // 已知2和3是素数
int i, j;
_Bool flag = 1;
for (i = 5; i < 10000; i++)
{
for (j = 2; j < i / 2; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag)
{
count++;
}
else
{
flag = 1;
}
}
printf("10000以内共有%d个素数!\n", count);
return 0;
}
对于这个if else语句中,flag=1这句代码没太明白起的作用是什么 求大佬帮小弟解释一下 感谢感谢! 标志性变量
当flag=1时就结束 int main()
{
int count = 2; // 已知2和3是素数
int i, j;
_Bool flag = 1;//相等于一个布尔型变量,ture(非零),false(为零)
for (i = 5; i < 10000; i++)
{
for (j = 2; j < i / 2; j++)
{
if (i % j == 0)
{
flag = 0;//如果i与j的模=0,不就是意味着这个当前的i能被别的数除尽,那就不是素数,所以flag为false(=0)
break;
}
}
if (flag)//if语言里面 当flag为真(也就是flag仍然=1)时,执行count++,flag到这一步还是1,说明前面的循环没有改变flag的值,则意味着i除了被自己整除以外,没有别的数可以除尽,不就说明是素数吗?所以count的个数+1
{
count++;
}
else//调到这儿意味着flag为false 也就是flag被赋值为0了,说明当前的i不为素数,然后准备下一个数,假设下一数为素数,这时候得重置flag为1
{
flag = 1;
}
}
printf("10000以内共有%d个素数!\n", count);
return 0;
} 4goodworld 发表于 2020-4-12 15:05
哇 这下真的特别明白啦 原来这个flag=1的意义就是为了回到上一个循环 感谢大佬!
页:
[1]