| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:新手求教100以内素数问题
只看楼主 加入收藏
kaworunice
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
新手求教100以内素数问题
代码如下
#include<stdio.h>
#include<math.h>
void main()
{
 int a,b;
 for(a=2;a<=100;a++)
 {
  for(b=2;b<=sqrt(a);b++)
  {
   if(a%b==0)
   break;
   }
  if(b>=sqrt(a))
  printf("%d ",a);
  }
}
运行之后并没有剔除4 9 25 49这几个数,把b的范围搞成小于等于a后就没有问题了,但是这样一来增加了运算量,本人新手实在看不出问题出在哪,还请赐教
搜索更多相关主题的帖子: include 
2013-04-05 19:04
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:4 
程序代码:
#include<stdio.h>
#include<math.h>
void main()
{
int a,b, prime;
for(a=2;a<=100;a++)
{
    prime = 1;
  for(b=2;b<=sqrt(a);b++)
  {
   if(a%b==0) prime = 0;
   break;
   }
  if(prime)
  printf("%d ",a);
  }
}
逻辑错误,,,

仰望星空...........不忘初心!
2013-04-05 19:06
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:4 
呵呵  简单的程序,逻辑步骤要想好,物燥   参考楼上的吧

三十年河东,三十年河西,莫欺少年穷!
2013-04-05 19:16
kaworunice
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-28
收藏
得分:0 
回复 2楼 Susake
这样改了也不对呢。。。结果还是夹杂了好多合数
2013-04-05 19:27
pengyancai
Rank: 2
等 级:论坛游民
帖 子:57
专家分:46
注 册:2013-3-4
收藏
得分:4 
# include <stdio.h>
# include <math.h>
void main ()
{
  int m,k,i;
  for (m=2;m<=100;m++)
  {
    k=(int)sqrt(m);
    for (i=2;i<=k;i++)
    {
      if (m%i==0) break;
    }
    if (i>k)
        printf("%5d",m);
  }
  printf("\n");
}
2013-04-05 20:34
aing321
Rank: 2
等 级:论坛游民
帖 子:31
专家分:23
注 册:2013-1-30
收藏
得分:4 
其实只要把if(b>=sqrt(a))中的大于等于换成大于就行了

天行健君子以自强不息 地势坤君子以厚德载物
2013-04-05 21:20
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:4 
干嘛要来个平方根??
2013-04-05 21:28
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>
void main()
{
int a=2,b;

printf("%d ",a);
for(a=3;a<=100;a+=2)
{
  for(b=3;b<=sqrt(a);b+=2)
  {
   if(a%b==0)
   break;
   }
  if(b>sqrt(a))
  printf("%d ",a);
  }
}




先前没看清题意,抱歉了!

[ 本帖最后由 YJ_Hao 于 2013-4-5 22:36 编辑 ]
2013-04-05 21:44
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
if(b>=sqrt(a))
   printf("%d ",a);
问题就出在这句,当2、4、9的时候满足啊!所以输出来了#include<stdio.h>
 #include<math.h>
 void main()
 {
 int a,b;
 for(a=3;a<=100;a++)
 {
   for(b=2;b<a;b++)
   {
    if(a%b==0)
    break;
    }
   if(b==a)
   printf("%d ",a);
   }
 }


[ 本帖最后由 邓士林 于 2013-4-6 08:52 编辑 ]

Maybe
2013-04-05 21:58
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:0 
2013-04-05 22:00
快速回复:新手求教100以内素数问题
数据加载中...
 
   



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

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