| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1820 人关注过本帖
标题:请教大家一个求素数的问题
只看楼主 加入收藏
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
明白了  谢谢!

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-16 14:24
dkyingan
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2008-10-15
收藏
得分:0 
这个还没开始学C  只能看懂一点点
2008-10-16 14:30
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
这个筛法还可以进一步优化的
有很多数重复消去了

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-16 18:25
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
这个函数我暂时不写了  留给你们练手哈

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-16 18:29
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
LZ的程序,去掉一个符号就搞定:
程序代码:
#include <stdio.h>
#include <math.h>

int main()
{
    int i, n;
    for (n = 101; n <= 200; n += 2)
    {
        for (i = 2; i <= sqrt(n); i++)
            if (n % i == 0) break;
        if (i > sqrt(n))
            printf("%d ", n);
    }
    printf("\n");
    return 0;
}

收到的鲜花
  • liyanhong2008-10-16 18:43 送鲜花  15朵   附言:说的对哦 是我忘了条件了

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-10-16 18:36
tuzuyao
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-10-16
收藏
得分:0 
谢谢楼上的高人,请问一下i >sqrt(n)与 i>=sqrt(n)+1有什么区别,为什么前者行,后者不行?
2008-10-16 20:56
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
//到现在都没人玩  我自己写了   这算法是 “厄拉多赛筛”的优化
#include<math.h>
#define N 10000
main()
{
  int i,j,a[N];
  for(i=2;i<N;i++) a[i]=1;
  for(i=2;i<floor(sqrt(N));i++)
  {
    if(a[i]) j=i*i;
     while(j<N)
     {
       a[j]=0;
       j=j+i;
     }
  }
  for(i=2;i<N;i++)
  {
    if(a[i]) printf("%4d ",i);
  }
  printf("\n");
}

[[it] 本帖最后由 liyanhong 于 2008-10-16 23:05 编辑 [/it]]

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-16 22:55
rjgcmjl
Rank: 1
来 自:浙江杭州
等 级:新手上路
帖 子:56
专家分:0
注 册:2008-3-9
收藏
得分:0 
[bo][un]tuzuyao[/un] 在 2008-10-16 20:56 的发言:[/bo]

谢谢楼上的高人,请问一下i >sqrt(n)与 i>=sqrt(n)+1有什么区别,为什么前者行,后者不行?

因为循环结束后i的确切值是int(sqrt(n))+1,它是整型,这个值是小于sqrt(n)+1的,sqrt(n)+1是double类型的

古道,西风,瘦马......
2008-10-16 23:13
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
[bo][un]liyanhong[/un] 在 2008-10-16 22:55 的发言:[/bo]

//到现在都没人玩  我自己写了   这算法是 “厄拉多赛筛”的优化
#include
#define N 10000
main()
{
  int i,j,a[N];
  for(i=2;i


别的都不说,你把floor(sqrt())两个函数放到了for循环里面去了,再优化也是白搭

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-10-21 02:30
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
学习了   是应该提出来的

[[it] 本帖最后由 liyanhong 于 2008-10-21 12:10 编辑 [/it]]

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-21 12:08
快速回复:请教大家一个求素数的问题
数据加载中...
 
   



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

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