| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2595 人关注过本帖
标题:一起来求素数
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 32楼 beyondyf
各有千秋 表示学习 !

梅尚程荀
马谭杨奚







                                                       
2012-12-04 14:32
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 35楼 lxsjzbd
我是专业学习的 呵呵。

梅尚程荀
马谭杨奚







                                                       
2012-12-04 14:32
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 36楼 beyondyf
这道题的确还没有其它的好方法了,杨大哥在数论方面的造诣还真不错的。

My life is brilliant
2012-12-04 20:04
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:15 
程序代码:
/* Program 7.11  A dynamic prime example         */
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

int main(void)
{
  unsigned long *primes = NULL;    
  unsigned long trial = 0;       
  size_t i = 0;

  int start = 0;

  bool found = false;            
  size_t total = 0;                
  size_t count = 0;                 

  start = clock();
  printf("How many primes would you like - you'll get at least 4?  ");
  scanf("%u", &total);             
  total = total<4U ? 4U:total;       

  primes = (unsigned long *)malloc(total*sizeof(unsigned long));
  if(primes == NULL)
  {
     printf("\nNot enough memory. Hasta la Vista, baby.\n");
     return 1;
  }

  *primes = 2UL;                 
  *(primes+1) = 3UL;                
  *(primes+2) = 5UL;                
  count = 3U;                       
  trial = 5U;                        

  while(count<total)
  {
    trial += 2UL;                    

    for( i = 0 ; i < count ; i++)
      if(!(found = (trial % *(primes+i))))
        break;                       

    if(found)                     
      *(primes+count++) = trial;   
  }

  printf("\ntime: %lf\n",((double)clock()-start)/CLOCKS_PER_SEC);
  return 0;
}



看了前几位大虾的程序,觉得都很不错,不过那类方法都被走光了...看看能不能找一条新路。

考虑到我可怜的机子承受不了这坑爹的压力,所以改用动态内存(至少程序本身不会太大...)
这个程序不会出现漏解,不过要计算的数太大它的效率就会明显低于前面几位的了,
因为它是将每一个已知的质数去取下一个质数的模,所以已知质数越多而下一个数又正好是质数的话就会检查完所有质数。所以没有十天半个月是看不到结果的了...

对了,其实我有一个问题,对于时间函数那方面我理解不深,
好像这次,有时clock()的返回值好像不对,是不是我哪里用错了?

I have not failed completely
2012-12-04 20:23
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
最近在学习,偶尔来一下,顶一下

WE GO
2012-12-04 21:18
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
小李过奖了,我的数论知识很基础,这不是自谦,这是个事实。

我很想有进一步的提高,可惜精力和天赋有限。

我记得以前看过一篇文章说一印度人找到了一种更快的判断素数的方法,还好像附上了代码。

当时对这个专题兴趣不大,知道有这么回事,没再深究。

最后,确实很久没见小陈了,代我向你姐问好。

重剑无锋,大巧不工
2012-12-04 21:39
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
向杨大哥问好
我电脑坏过一段时间&&我又在忙我的事,所以在论坛时间就少了。。。
是不是这图片太艳了,老劳杨大哥惦记着。。。

WE GO
2012-12-04 21:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
电脑换新的了啊

是说你的头像吗

DO IT YOURSELF !
2012-12-04 21:56
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,没有没有,你姐这张照片挺好的,我也不知道为什么,看见照片总是想起佟湘玉来,我挺喜欢闫妮的,很有陕西味(ps:我也算半个陕西人)。

如果你觉得不妥,以后我不提就是了

重剑无锋,大巧不工
2012-12-04 21:58
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
是啊,我原来的神机已不复存在了。。。
换了一老爷机。。

WE GO
2012-12-04 22:00
快速回复:一起来求素数
数据加载中...
 
   



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

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