10000以内的素数
#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语句我没有看懂,求助老师同学帮忙注释一下,谢谢 本帖最后由 lh1996 于 2019-9-24 20:30 编辑
进入for循环以后,如果求模得0,不是素数,flag置为0,跳出循环,进入下边的else语句,再将flag置为1,再次进入循环。如果求模不等0,不进入for循环,根据上次的flag为1,进入if(flag)count++。最后count就计算出多少个素数了。就是这样的。 lh1996 发表于 2019-9-24 20:28
进入for循环以后,如果求模得0,不是素数,flag置为0,跳出循环,进入下边的else语句,再将flag置为1,再次 ...
#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; //i不是素数,flag为假,跳出循环
}
}
if (flag)//若为真,素数个数加一
{
count++;
}
else//否则,flag=1???
{
flag = 1;
}
}
printf("10000以内共有%d个素数!\n", count);
return 0;
}
真的愚钝,else这个语句还是没搞懂逻辑关系 15029975132 发表于 2019-9-24 22:10
#include
int main()
循环语句的flag的真假是进入下面的if 语句的判断条件{:5_108:}兄弟再想想 lh1996 发表于 2019-9-25 09:32
循环语句的flag的真假是进入下面的if 语句的判断条件兄弟再想想
好的,谢谢师兄指教
页:
[1]