C语言输出100-200的素数,帮忙看下哪个地方有问题

[复制链接]
查看11 | 回复5 | 2013-3-3 18:22:23 | 显示全部楼层 |阅读模式
既然楼主把程序复制错了,前面就可以不看了,当然,看了也行。。先说楼主认为正确的程序,1,在没有对m进行初始化的时候,就使用m来初始化其他变量。2,我觉得楼主对于变量使用的理解有一定问题,根据你的写法,你应该是认为这几句a=m%10;
b=m/10%10;
c=m/100%10;已经对abc进行了初始化,那么后面使用时计算机会随着m的增加,自动按照前面这个公式计算。很可惜,计算机没有这么聪明。所以正确的做法时,将这3句加入for循环中,放在if之前。看这里!!然后再说前面使用while的程序,1,sqrt(m);函数的原型是 double sqrt(double),也就是说返回值是 doub...
回复

使用道具 举报

千问 | 2013-3-3 18:22:23 | 显示全部楼层
第一个:在k=sqrt(m);前或后加一句i=2;,将每次判断新的m的起始值设置为2,逻辑上就对了。第二个:m还没有赋值,就:a=m%10;b=m/10%10;
c=m/100%10;这样用了!也不知代码是要达到什么目的。...
回复

使用道具 举报

千问 | 2013-3-3 18:22:23 | 显示全部楼层
while(m<=999)
{
m=100;if(m==(a*a*a+b*b*b+c*c*c))
printf ("%d ",m);m++;}...
回复

使用道具 举报

千问 | 2013-3-3 18:22:23 | 显示全部楼层
这两个程序没有任何可比性,素数程序应该内循环,每次i从2开始算起,就是说每找完一个数i重置为2,for有个初始化语句,可以岛次重新初始化,while无此福利,因此要在外面初始化,具体在外循环内,内循环开始三前,i重新赋值为2即可!...
回复

使用道具 举报

千问 | 2013-3-3 18:22:23 | 显示全部楼层
在循环体中对i只初始化了一次。将"i=2;"移到第二个while之前即可。某楼说对sqrt返回值进行强制转换应该没有必要,我测试过不必的。...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行