c语言s1e15课后作业动动手第二题
#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;
}
这个i为什么等于5呢???? int count = 2; // 已知2和3是素数
4 不是素数
所以从5开始 人造人 发表于 2017-4-10 12:50
int count = 2; // 已知2和3是素数
4 不是素数
所以从5开始
int count =1 //已知2是素数
i=3
这样为啥不行嘞? xiaoshazi 发表于 2017-4-10 13:00
int count =1 //已知2是素数
i=3
这样为啥不行嘞?
很明显,4不应该输出
但是为什么会输出4呢?
#include <stdio.h>
int main()
{
int count = 1; // 已知2是素数
int i, j;
_Bool flag = 1;
for(i = 3; i < 100; i++)
{
for(j = 2; j < i / 2; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag)
{
printf("%d\n", i);
count++;
}
else
{
flag = 1;
}
}
printf("10000以内共有%d个素数!\n", count);
return 0;
}
3
4
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
10000以内共有26个素数!
请按任意键继续. . .
人造人 发表于 2017-4-10 13:12
很明显,4不应该输出
但是为什么会输出4呢?
为什么输出4呢? xiaoshazi 发表于 2017-4-10 13:17
为什么输出4呢?
你告诉我,当i = 4时,会不会执行 flag = 0; ?
for(i = 3; i < 100; i++)
{
for(j = 2; j < i / 2; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
} for(i = 3; i < 100; i++)
{
for(j = 2; j < i / 2; j++) // 4/2 = 22<2不成立没有进for循环
{
if(i % j == 0)
{
flag = 0;
break;
}
}
} zlj19931010 发表于 2017-4-10 14:35
for(i = 3; i < 100; i++)
{
for(j = 2; j < i / 2; j++) // 4/2 = 22
懂了 为什么 else 块里的语句是flag=1呢?
页:
[1]