C语言输出1000以内的质数,程序如下,请问是怎么打印出2的

#include<stdio.h>#include<math.h>intmain(intargc,char**aargv){inti,j,w,k,n=0;for(i=2;... #include<stdio.h>
#include<math.h>
int main(int argc,char** aargv)
{
int i, j, w, k, n = 0;
for (i = 2; i <= 1000; ++i)
{
w = 1;
k = sqrt(i);
for (j = 2; j <= k; ++j)
{
if (i%j == 0)
{
w = 0;
break;
}
}
if (w)
{
++n;
if (n%10 == 0)
printf("%d\n",i);
else
printf("%d\t",i);
}
}
}
当i=2时,for(j=2;j<=k;j++),一开始i%j不就是等于0了吗?那flag就标0了,怎么会有输出呢?
当i=2时,for(j=2;j<=k;j++),一开始i%j不就是等于0了吗?那w就标0了,怎么会有输出呢?
展开
 我来答
悉蕙6x
2011-10-13 · TA获得超过202个赞
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:67.6万
展开全部
当i=2时,k = sqrt(i)=根号2,,就不会执行这个for (j = 2; j <= k; ++j)循环,因 j>k 跳到if (w)这里执行else语句,就会输出2了
偑8
2011-10-13
知道答主
回答量:17
采纳率:0%
帮助的人:10.9万
展开全部
for (j = 2; j <= k; ++j)
{
if (i%j == 0)
{
w = 0;
break;
}
}
k=根号2,j=2,j>k;所以for循环不执行 w就还是1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式