找回密码
 欢迎注册
楼主: 无心人

[讨论] 快速计算10^12以内全部卡米切尔数

[复制链接]
发表于 2008-3-27 10:00:38 | 显示全部楼层
直接筛选的确可以设计出一个不错的算法,不过感觉计算到M=10^12还是比较花费时间。应该比筛选素数的代码还要慢一些。 首先我们计算出所有不超过707107的素数(也就是(2p-1)p<10^12) 然后对于每个素数p,做如下筛选: i)删除p,p^2,p^3,... (也就是删除所有p的整数幂) ii)
  1. for(i=2*p,t=2;i<M;i+=p,t++){
  2. if(t==p){///这里说明i=1(mod p-1)
  3. t=1;
  4. }else{///这里说明i!=1(mod p-1)
  5. 删除候选数 i;
  6. }
  7. }
复制代码
通过上面筛选,余下就是卡米切尔数了。(当然所有偶数可以事先删除)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-27 10:16:50 | 显示全部楼层
我的浅见:
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-27 10:26:51 | 显示全部楼层
假设卡米切尔数n由d个奇素数组成,分别记为p(1),p(2),...,p(d). 1<=r
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-27 10:49:01 | 显示全部楼层
应是:Tr=LCM((p(1)-1),(p(2)-1),...,(p(d)-1)).
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-3-27 11:46:01 | 显示全部楼层
mathe啊 通过那些筛选只是候选而已啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-27 12:58:41 | 显示全部楼层
我那个筛法留下来不仅仅是候选数。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-3-27 13:41:56 | 显示全部楼层
那就筛下<10000看剩下的是不是?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-27 14:17:27 | 显示全部楼层
运行了一下,的确有些错误,第一步改成筛所有p^2的倍数就可以了。原先以为可以省略的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-27 14:19:27 | 显示全部楼层
运行了一下 2^30以前应该有75541546个,如果仅仅统计不输出需要花费32.6秒。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-3-27 14:23:41 | 显示全部楼层
结果太多 这种数很稀少的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-23 20:32 , Processed in 0.022735 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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