| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:为什么啊
只看楼主 加入收藏
guisu
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-1-10
收藏
 问题点数:0 回复次数:11 
为什么啊
各位,我有一道题,是求100到200之间的素数,我编写如下,编译时没有错误,可是运行时却把100到200之间所有的数都打印出来了,不知道为什么,请各位帮帮忙啊!
#include<stdio.h>
#include<math.h>
void main()
{
        int i,k,j,m=0;
        for(i=100;i<=200;i++)
        {    k=i;
             for(j=2;j<=sqrt(k);j++)
                  if(k%i==0)
                    break;
                  printf("%d\t",k);
                  m++;
                  if(m%10==0)
                     printf("\n");
        }
}   
搜索更多相关主题的帖子: include void 
2005-01-18 13:21
amzyb
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2005-1-10
收藏
得分:0 
#include<stdio.h>
#include<math.h>
void main()
{
        int i,k,j,m=0;
        for(i=100;i<=200;i++)
        {    k=i;
  for(j=2;j<sqrt(k);j++){
                  if(k%j==0)
                    break;
   }
  if(j+1>sqrt(k)){
   printf("%d\t",k);
   m++;
     }
  if(m%10==0)
   printf("\n");
        }
}   
2005-01-18 14:32
amzyb
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2005-1-10
收藏
得分:0 
你的程序不管是不是素数都会执行道打印该数语句;
我修改了一下判断条件,你看看如何!
我不太懂输出数据从第二行道第三行隔了好大一块地方,实在是理解不了!◎
你要是知道告诉我一声哦!:)
2005-01-18 14:35
guisu
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-1-10
收藏
得分:0 
谢谢啊,但是为什么要加上
if(j+1>sqrt(k))  
这个语句呢

2005-01-18 15:46
guisu
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-1-10
收藏
得分:0 
另外第二行和第三行出现那么大的空间 是因为最后一个if语句的毛病 因为每一次判断都要输出\n
我也是刚刚发现,不知道对不对啊 呵呵

2005-01-18 15:53
guisu
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-1-10
收藏
得分:0 
#include<stdio.h>
#include<math.h>
void main()
{
        int i,k,j,m=0;
        for(i=100;i<=200;i++)
        {    k=i;
            for(j=2;j<sqrt(k);j++)
   {
                if(k%j==0)
                break;
   }
           if(j+1>sqrt(k))
     {
             printf("%d  ",k);
                  m++;
     
            if(m%10==0)
              printf("\n");
     }
  }
}   
这样就对了,呵呵

2005-01-18 15:57
pgboy_992
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2005-1-17
收藏
得分:0 
if(j+1>sqrt(k))说明它是一个素数啊。 素数的定义啊。只能被1和本身整除。 第二个循环是在穷举,看它是否能被2到sqrt(k)这个数整除,如果不能的话,那么它就是一个素数。。 #include<stdio.h> #include<math.h> void main() { int i,k,j,m=0; for(i=100;i<=200;i++) { k=i; for(j=2;j<sqrt(k);j++){ if(k%j==0) break; } if(j+1>sqrt(k)){ printf("%d\t",k); m++; ( m % 10 == 0 ) ? printf("\n") : '';} } getch(); } 把判断放到这个if语句里就不会产生空行了。放在外面的话,就属于外层循环的了。每次都对他进行判断。也就是说在不满足if(j+1>sqrt(k))这个条件的情况下也进行这个操作了。
2005-01-18 16:11
aniude
Rank: 2
等 级:新手上路
威 望:3
帖 子:231
专家分:0
注 册:2004-11-3
收藏
得分:0 
大家认真看下,以上所以程序都是错的!!!

2005-01-18 19:03
aniude
Rank: 2
等 级:新手上路
威 望:3
帖 子:231
专家分:0
注 册:2004-11-3
收藏
得分:0 
还有人在误导别人 :&lt;

2005-01-18 19:04
guisu
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-1-10
收藏
得分:0 
但是可以运行啊,哪里错了啊

2005-01-18 20:05
快速回复:为什么啊
数据加载中...
 
   



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

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