| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 689 人关注过本帖
标题:新手遇到疑问,请高手解答
只看楼主 加入收藏
pang58
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-21
收藏
 问题点数:0 回复次数:5 
新手遇到疑问,请高手解答
刚刚编一段输出101-200以耐素数的程序,程序如下
#include"math.h"
main()
{
   int i,j,k,leap,h=0;
   for(i=101;i<=200;i++)
   {  
      k=sqrt(i);
      for(j=2;j<=k;j++)
       if(i%j==0)
          leap=0;
        else leap=1;
          if(leap)
           printf("%-4d",i);
}
}

结果不行,输出的不是素数。然后我参考了一段程序以后修改了一下,结果就可以了,但是不知道为什么会这样。请高手解答,
修改后程序:
#include"math.h"
main()
{
   int i,j,k,leap,h=0;
   for(i=101;i<=200;i++)
   {  
      k=sqrt(i);
      for(j=2;j<=k;j++)
       if(i%j==0)
          leap=0;
          if(leap)
           printf("%-4d",i);
           leap=1;
}
}
搜索更多相关主题的帖子: 素数 疑问 leap 
2008-03-21 19:38
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:0 
根据我所掌握的知识,LZ的问题出现在for语句的循环体,即for循环执行哪些语句。理论来说,for循环执行之后的一条语句。也可以使用复合语句。
根据第一个程序,第二个for语句循环的是
if(i%j==0)
     leap=0;
else leap=1;
后面的if(leap)
           printf("%-4d",i);
属于第二条语句了,j的那个for循环不执行它。
LZ可以分析一下,是否这样。
2008-03-21 19:52
zm1986
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-3-16
收藏
得分:0 
LZ用leap为1时判断为素数,第一个程序取到的值是在j为小于k的最大整数时,如果(i%j==0)为true时leap为1,输出,否则leap为0。第二个程序只在(i%j==0)满足时才将leap设为0,即i不是素数,当i是素数时,leap不为0。
建议LZ在leap初始时将它设为1。
2008-03-22 20:56
qifaman
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-3-22
收藏
得分:0 
你的h=0,应该是多余的吧,要么就是算出101-200之间素数的个数了。
你的第一个程序后面少了leap=1;当上面完成leap=0;结束后无法掉转到leap=1;这样程序就一直会执行leap=0;的操作,是一个死循环。
看看下面这个程序,比较全点了。
#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;}
   if(leap==1) {printf("%-4d",m);h++;
        if(h%10==0)
        printf("\n");
        }
   leap=1;
  }
 printf("\nThe total is %d",h);
}
2008-03-22 21:32
pang58
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-21
收藏
得分:0 
谢谢各位回答!感激不尽
2008-03-24 17:43
pang58
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-21
收藏
得分:0 
哈哈,我就是看了4L的程序才修改的!我也觉得应该先初始化leap=1,但系为什么要这样我就不明白了!
2008-03-24 17:48
快速回复:新手遇到疑问,请高手解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039627 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved