标题:有本事你就找出问题来
只看楼主
傻瓜笨笨1986
Rank: 1
等 级:新手上路
帖 子:29
专家分:3
注 册:2010-10-8
结帖率:77.78%
已结贴  问题点数:5 回复次数:6 
有本事你就找出问题来
/*本函数用来输出100以内的素数*/
#include<stdio.h>
#include<math.h>
main()
{
    int i,num1,j;
    clrscr();
    for(num1=0;num1<=100;num1++)
    {   
        if((num1==1)||(num1/2==0))
             ;/*空语句*/
          else
          {
             i=sqrt(num1);
             for(j=2;j<=i;j++)/*就是这句和下面一句不能循环,这句应该和 if(num1%j==0)   break;可以循环到满足条件为止的,比如num1=9时候应该循环到j为3,可是j在2时候就不做了*/
             if(num1%j==0)   break;
             printf("%d",num1);
            }
      }
}  
搜索更多相关主题的帖子: 本事 
2010-10-11 22:32
cacker
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-11 22:38
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
得分:0 
程序代码:
/*本函数用来输出100以内的素数*/
#include<stdio.h>
#include<math.h>
main()
{
    int i,num1,j;
   /// clrscr();
    for(num1=0;num1<=100;num1++)
    {   
        if((num1==1)||(num1/2==0))
             ;/*空语句*/
          else
          {
             i=sqrt(num1);
             for(j=2;j<=i;j++)/*就是这句和下面一句不能循环,这句应该和 if(num1%j==0)   break;可以循环到满足条件为止的,比如num1=9时候应该循环到j为3,可是j在2时候就不做了*/
             if(num1%j==0)
                 break;
             if(j>=(i+1))
             printf("%4d",num1);
            }
      }
}   
给你改好了!楼主的求素数的部分貌似有问题!给你改了下~还有楼主的题名貌似得改改了~只是建议
2010-10-11 22:44
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:5 
呵呵 ,我也看了下!
程序代码:
/*本函数用来输出100以内的素数*/
#include<stdio.h>
#include<math.h>
main()
{
    int i,num1,j;
    clrscr();
    for(num1=0;num1<=100;num1++)
    {   
        if((num1==1)||(num1/2==0))
             ;/*空语句*/
          else
          {
             i=sqrt(num1);
             for(j=2;j<=i;j++)/*就是这句和下面一句不能循环,这句应该和 if(num1%j==0)   break;可以循环到满足条件为止的,比如num1=9时候应该循环到j为3,可是j在2时候就不做了*/
             if(num1%j==0)   break;//楼主在这里的想法是跳出循环,但是如果跳出后,你不做任何处理,也还是无益的
             printf("%d",num1);
            }
      }
}   
我给出令外一种改法,楼主参考下:
程序代码:
/*本函数用来输出100以内的素数*/
#include<stdio.h>
#include<math.h>
main()
{
    int i,num1,j;
    //  clrscr();       没什么必要了!
    for(num1=0;num1<=100;num1++)
    {   
        if((num1==1)||(num1/2==0))
             ;/*空语句*/
          else
          {
             i=sqrt(num1);
             for(j=2;j<=i;j++)/*就是这句和下面一句不能循环,这句应该和 if(num1%j==0)   break;可以循环到满足条件为止的,比如num1=9时候应该循环到j为3,可是j在2时候就不做了*/
             if(num1%j==0)   goto loop;//直接跳出内层循环,并且对外层循环做类似于“continue”的处理,
             printf("%d",num1);
            }
loop:   ;
      }
}  

----------------------

另外补充一下,楼主代码中的if完全没必要了,可以把num1的初值设为2就好(0,1 压根没必要就行素性判断啊)


[ 本帖最后由 jack10141 于 2010-10-11 23:11 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-10-11 23:04
傻瓜笨笨1986
Rank: 1
等 级:新手上路
帖 子:29
专家分:3
注 册:2010-10-8
得分:0 
回复 4楼 jack10141
0和1是因为题目的需要才判断的,谢谢虾哥!
2010-10-12 09:01
傻瓜笨笨1986
Rank: 1
等 级:新手上路
帖 子:29
专家分:3
注 册:2010-10-8
得分:0 
回复 4楼 jack10141
斑竹,你加我qq好吗,为什么要你那样才能做#include<stdio.h>
#include<math.h>
main()
{
    int i,num1,j;
    //  clrscr();       没什么必要了!
    for(num1=0;num1<=100;num1++)
    {   
        if((num1==1)||(num1/2==0))
             ;/*空语句*/
          else
          {
             i=sqrt(num1);
             for(j=2;j<=i;j++)/*就是这句和下面一句不能循环,这句应该和 if(num1%j==0)   break;可以循环到满足条件为止的,比如num1=9时候应该循环到j为3,可是j在2时候就不做了*/
             if(num1%j==0)   goto loop;//直接跳出内层循环,并且对外层循环做类似于“continue”的处理,
             printf("%d",num1);
            }
loop:   ;
      }
}  

596615177
2010-10-12 15:23
傻瓜笨笨1986
Rank: 1
等 级:新手上路
帖 子:29
专家分:3
注 册:2010-10-8
得分:0 
回复 4楼 jack10141
斑竹,我明白了,谢谢啊,不过有个错误f((num1==1)||(num1/2==0))应该是f((num1==1)||(num1%2==0)),本来我自己也写错了。嘻嘻
2010-10-12 17:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322596-1-1.html




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

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