判断101-200之间有多少个素数,并输出所有素数。

[复制链接]
查看11 | 回复4 | 2009-2-17 09:18:35 | 显示全部楼层 |阅读模式
#include "math.h"
main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
{ k=sqrt(m+1);
for(i=2;i<=k;i++)

if(m%i==0)

{leap=0;break;}/(既然为leap赋予了leap=1这里为什么为0?)
if(leap) {printf("%-4d",m);h++;/(这个语句是真么意思?)

if(h%10==0)

printf("\n");

}
leap=1;
}
printf("\nThe total is %d",h);
}
看了好几个关于此题的解答虽然感觉前边可以写的简单写但这个中还有几点 不是很明白 希望哪位大哥能帮忙解答下

回复

使用道具 举报

千问 | 2009-2-17 09:18:35 | 显示全部楼层
第一个判断语句,就是当m不是素数的时候,leap=0,为什么呢?看下一个判断就明白了,下一个判断语句的作用就是把素数按指定格式输出,当然首先要选出素数啊,而当leap为0时,就是m不是素数,不符合条件,不执行,当leap为1时,m是素数,就输出。此程序中的leap为循环数m是否为素数的标志,我们就可用leap来判断是否输出。至于你说的%-4d就是-代表左对齐,4代表列表宽度,d就不用我说了吧,通俗点就是说每个数字占四列,并且数字考左,这样输出才方便看。希望这能对你有帮助。...
回复

使用道具 举报

千问 | 2009-2-17 09:18:35 | 显示全部楼层
{leap=0;break;}关于leap相当于旗帜的用途 如果当m%i==0时 也就是非素数的时候{leap=0;break;}做了这2个操作 分别有什么用途呢?如果当leap==0那么if(leap) {printf("%-4d",m);h++;if(h%10==0) printf("\n"); } 这个语句就不运行 ...
回复

使用道具 举报

千问 | 2009-2-17 09:18:35 | 显示全部楼层
1,0在计算机中代表真假,在c++中分别用true和false表示1和0.leap = 1表示先假设情况为真。你这个题是找素数if(m%i==0)不是素数所以情况为假,所以leap=0。if(leap )表示如果是素数。...
回复

使用道具 举报

千问 | 2009-2-17 09:18:35 | 显示全部楼层
101 103 105 107...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行