设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: chaochao
打印 上一主题 下一主题

[胡扯] 蛋疼数学程序帝!质数算法。

   关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-27
帖子
21
31
发表于 2010-6-27 18:26:43 | 只看该作者
回复 模仿者 的帖子


    和睡莲一起玩 等她长大了就不能和她一起玩了 长大了就带刺了

点评

你压在她身上,这样她就没办法长大了。  发表于 2010-6-28 04:56
回复 支持 反对

使用道具 举报

Lv1.梦旅人

标题党66RPG支部书记
职务:66RPG灌水局局长<

梦石
0
星屑
79
在线时间
624 小时
注册时间
2006-2-25
帖子
2700

开拓者冬季迷宫创意大赛亚军第4届短篇游戏比赛冠军

32
发表于 2010-6-27 22:38:03 | 只看该作者
26的开始走题……

对我而言,简直就是在看一群神在写天书
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
33
发表于 2010-6-28 02:43:12 | 只看该作者
回复


    java的  貌似java的效率本身就比C要低些
模仿者 发表于 2010-6-27 18:06


chaochao 的代码是 C#,Java 没有 ulong 这种无符号类型,也没有 List<?>
其实看到 System.Console 就基本上就可以肯定是 C# 了……

chaochao 那个是用可能的质因数试除来判断素性,那内层循环里可以加一个 num <= sqrt(i)

说到平方根,发现我之前写的也没考虑平方根方面的优化,特此补上:

  1. BOUND = 1000000
  2. primes = new bits[BOUND+1]
  3. memset(primes, 1)
  4. for i from 2 to BOUND
  5.     if primes[i] then
  6.         println(i)                // 输出质数
  7.         j = i * i
  8.         while j <= BOUND
  9.             primes[j] = 0
  10.             j += i
  11.         end while
  12.     end if
  13. end for
复制代码
之前写的 j 是从 i << 1 开始,但 i 的小于 i^2 的倍数肯定是已经被之前的质数筛掉了的,所以应该从 i^2 开始
在我的机器上用 VC++ 编译器编译的程序测试,100万以内瞬间算完,1000万低于1秒
如果没弄错的话,埃拉托斯特尼筛法需要 O(n log log n) 时间

评分

参与人数 1星屑 +200 收起 理由
chaochao + 200 好厉害。

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

34
发表于 2010-6-28 08:37:36 | 只看该作者
筛子大发
设数组A={true,false,...,false}(1~n)
找到质数A中第一个false的位置(k)
则输出,标记为true,然后把i*k (i*k<=n)全部置true
重复直到数组A为空

点评

最快的是打表大法O(1)  发表于 2010-6-28 08:39
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-19
帖子
5
35
发表于 2010-6-28 09:43:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

36
发表于 2010-6-28 10:24:22 | 只看该作者
程序帝来了,传说中的查表法,保证比ls那些速度快-v-|||
  1.                 int temp[] = {
  2.                 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
  3.                 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
  4.                 73, 79, 83, 89, 97, 101, 103, 107, 109, 113,
  5.                 127, 131, 137, 139, 149, 151, 157, 163, 167, 173,
  6.                 179, 181, 191, 193, 197, 199, 211, 223, 227, 229,
  7.                 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
  8.                 283, 293, 307, 311, 313, 317, 331, 337, 347, 349,
  9.                 353, 359, 367, 373, 379, 383, 389, 397, 401, 409,
  10.                 419, 421, 431, 433, 439, 443, 449, 457, 461, 463,
  11.                 467, 479, 487, 491, 499, 503, 509, 521, 523, 541,
  12.                 547, 557, 563, 569, 571, 577, 587, 593, 599, 601,
  13.                 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
  14.                 661, 673, 677, 683, 691, 701, 709, 719, 727, 733,
  15.                 739, 743, 751, 757, 761, 769, 773, 787, 797, 809,
  16.                 811, 821, 823, 827, 829, 839, 853, 857, 859, 863,
  17.                 877, 881, 883, 887, 907, 911, 919, 929, 937, 941,
  18.                 947, 953, 967, 971, 977, 983, 991, 997,};
  19.                 for (int i=0; i<168; i++)
  20.                 {
  21.                                 std::cout << temp[i] << std::endl;
  22.                 }
复制代码
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-18
帖子
171
37
发表于 2010-6-28 10:54:11 | 只看该作者
回复 雷欧纳德 的帖子


    请用此方法列出1亿以内的{:nm_6:}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

38
发表于 2010-6-28 10:55:35 | 只看该作者
回复 模仿者 的帖子


我先用ls的方法算出1亿以内的表并生成代码就行了,然后我还是最快的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
帖子
995

贵宾

39
发表于 2010-6-28 14:09:51 | 只看该作者
其实查表法才是最快的~~~
雷欧纳德 发表于 2010-6-27 17:53



+1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
15 小时
注册时间
2007-2-18
帖子
2464
40
发表于 2010-6-28 14:22:35 | 只看该作者
DES里面要生成的素数都是大于long的,乃们这么闲就去研究32位素数吧= =
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-5 22:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表