| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2619 人关注过本帖
标题:用C语言求2-32767的素数,谁帮下 郁闷中~
只看楼主 加入收藏
wangchaowushang
Rank: 1
来 自:陕西
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-12-19
收藏
得分:0 
原帖由 [bold][underline]StarWing83[/underline][/bold] 于 2007-12-19 16:31 发表 [url=http://bbs.][/url]
这个怎么样?#include
#include

int main() {
    int i,j,m,n=0;
    for (i=2;i

这个负数都出来了!!!

未命名.jpg (33.96 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2007-12-19 17:00
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
从1到n去除n,从2到sqrt(n)去除n都浪费了好多时间啊,其实只有2除的时候有用,完全可以从3开始,用所有的奇数去除(2单独考虑),这样就可以降低一半的循环次数。
要想用更少的循环次数就用筛法!几乎每本c语言书上都有这个例题吧!
2007-12-19 17:08
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
回复 11# 的帖子
你用什么编译器?我的代码在VC++2005上通过。

专心编程………
飞燕算法初级群:3996098
我的Blog
2007-12-19 17:26
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
你删掉(float)应该就可以了,加这个是为了防止2005的error。我测试一下再说

专心编程………
飞燕算法初级群:3996098
我的Blog
2007-12-19 17:27
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>

int main() {
    unsigned int i,j,m,n=0;
    for (i=2;i<=32767;i++) {
        for (j=2,m=sqrt(i);j<=m && i%j;j++);
        if (j>m)printf("%5d%c",i,(++n)%12?' ':'\n');
    }
    getchar();
}
以上代码在TC2.0上通过

专心编程………
飞燕算法初级群:3996098
我的Blog
2007-12-19 17:28
zhaoyangkuan
Rank: 1
来 自:四川
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-12-18
收藏
得分:0 
#include"stdio.h"
#include"math.h"
main()
{
   int a,b,i,flag;
  for(a=2;a<=32767;a++)
  { b=sqrt(a);
    flag=0;
    for(i=2;i<=b;i++)
    { if(a%i==0)
      { flag=1;
       break;
       }
      }
    if(flag==0)
    printf("%5d",a);
    }
  }
帮我看一下!这个程序那个地方错了!结果是个无限循环!

只有起进到论坛,才能取得成功。
2007-12-19 19:41
zhaoyangkuan
Rank: 1
来 自:四川
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-12-18
收藏
得分:0 
#include"stdio.h"
#include"math.h"
main()
{
   int a,b,i,flag;
  for(a=2;a<=32767;a++)
  { b=sqrt(a);
    flag=0;
    for(i=2;i<=b;i++)
    { if(a%i==0)
      { flag=1;
       break;
       }
      }
    if(flag==0)
    printf("%5d",a);
    }
  }
帮我看一下!这个程序那个地方错了!结果是个无限循环!

只有起进到论坛,才能取得成功。
2007-12-19 19:42
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
收藏
得分:0 
LS的 其实不应该加 break 也可以的

用代码打出楼房...用编程编出幸福...
2007-12-19 20:01
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
收藏
得分:0 
呵呵,其实那个算法的for后面;号是必须的. 空语句么.
2007-12-19 20:19
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
原帖由 [bold][underline]C语言的深度[/underline][/bold] 于 2007-12-19 20:01 发表 [url=http://bbs.][/url]
LS的 其实不应该加 break 也可以的

为什么不应该加!当然结果是一样的,但可以少做些无用功啊!
2007-12-19 21:25
快速回复:用C语言求2-32767的素数,谁帮下 郁闷中~
数据加载中...
 
   



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

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