| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4926 人关注过本帖
标题:求1到100之间的素数并输出,为什么我的这个错了
只看楼主 加入收藏
woatmt
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-9-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
求1到100之间的素数并输出,为什么我的这个错了
# include <stdio.h>

int main(void)
{

    for (int i = 3;i< 100;i++)
        for(int j = 2; j <= i-1;j++)
        {
            if (0 ==i % j)
                ;
            else
                printf("%d ",i);
        }

        return 0;
}
搜索更多相关主题的帖子: void include 
2012-11-07 13:03
浅唱我的Time
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:98
专家分:562
注 册:2012-9-24
收藏
得分:5 
回复 楼主 woatmt
#include<stdio.h>
int main()
{
  int i,j;
  for(i=2;i<101;i++)
  {
   for(j=2;j<i;j++)
   if(i%j==0)break;
   if(i==j)
   printf("%3d",i);
  }
   printf("\n");
}
  看看这个
2012-11-07 13:38
柳林
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2012-11-7
收藏
得分:5 
为什么主函数用int型也可以呢?不应该是void型的吗
2012-11-07 17:23
woatmt
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-9-2
收藏
得分:0 
回复 2楼 浅唱我的Time
请问一下,你写得这个程序的流程是这样的
先 是i = 2 ,  然后是 i < 101 然后就是 j = 2 ,然后就是  判断  j是否小于 i  ,但是现在i和j是相等的,等于 是不执行第二个for的
然后就是 执行i++。  i =  3了。那么,为什么这个程序最后能正确的输出啊。请指教!
2012-11-07 18:27
浅唱我的Time
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:98
专家分:562
注 册:2012-9-24
收藏
得分:0 
回复 4楼 woatmt
i=2执行第一个for循环,再第二个for循环j=2,再判断,因为i==j,就输出2 了,而不是你说的那样,你再好好看看
2012-11-07 18:42
Glost
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:54
专家分:48
注 册:2010-10-5
收藏
得分:5 
# include <stdio.h>

int main(void)
{

    for (int i = 3;i< 100;i++)
        for(int j = 2; j <= i-1;j++)    //这里也可以不用这么复杂,增加时间复杂度,可以这样j<(int)sqrt(i)
        {
            if (0 ==i % j)
                ;
            else                       //输出语句这里有问题啊!               
                printf("%d ",i);
        }

        return 0;
}

额 ,我不是很会帮别人指出问题啦,自己还是多看看,调试一下,再想想,很简单的问题!

只有一条路不能选择—那就是放弃的路;只有一条路不能拒绝—那就是成长的路。
2012-11-07 19:12
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:5 
试试这个
程序代码:
 # include <stdio.h>

int main(void)
{
      int i,j;
    for (i = 3;i< 100;i++)
       { for(j= 2;j <= i/2;j++)
         {
            if (0==i%j)
             break;
            if(j==i/2)printf("%d",i);
         }
        }
        return 0;
} 
本人新手,说错勿怪

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-07 19:32
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
第一,别在for循环条件的括弧里定义变量,可能高手会这样用,但我们这些新手还是按部就班的好,不然出错都不知道哪里出的。
第二,已经用if判断出了不是素数(i%j==0),就马上跳出第二重循环,你放个空语句,他还会继续循环的,当j的值变化使i%j!=0是,就会执行printf语句输出;
第三,输出的时机要把握,也就是什么时候输出,
第四个就是j的值不需要那么大
本人新手,说错勿怪。。。。。。
 
 
 
 

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-07 19:40
woatmt
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-9-2
收藏
得分:0 
回复 5楼 浅唱我的Time
我知道了,第二个for控制的只是break那条语句而已,我没注意到。真心谢谢你!
2012-11-07 20:21
woatmt
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-9-2
收藏
得分:0 
回复 6楼 Glost
现在搞明白了,j只要小于那个数的平方根就行了,谢谢了
2012-11-07 20:23
快速回复:求1到100之间的素数并输出,为什么我的这个错了
数据加载中...
 
   



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

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