282842712474 发表于 2009-8-22 18:04:17

我写得含糊了,43结尾是手机的结尾,而不是素数的结尾^^

medie2005 发表于 2009-8-22 18:34:26

18965210743 == 1140353 * 16631
18907561243 == 20357 * 928799
18925160743 == 450803 * 41981
18917065243 == 70957 * 266599
18927160543 == 550993 * 34351
18965710243 == 21023 * 902141
18962715043 == 11173 * 1697191
18920516743 == 751321 * 25183
18957062143 == 191441 * 99023
18961270543 == 551729 * 34367
18917062543 == 21817 * 867079
18927615043 == 21893 * 864551
18910625743 == 42131 * 448853
18951207643 == 52201 * 363043
18967102543 == 22247 * 852569
18902756143 == 332251 * 56893
18927561043 == 382661 * 49463
18960217543 == 13037 * 1454339
18925671043 == 83101 * 227743
18927156043 == 13187 * 1435289
18901652743 == 713243 * 26501
18952607143 == 13291 * 1425973
18921567043 == 403729 * 46867
18912576043 == 33773 * 559991
18967512043 == 13799 * 1374557
18926501743 == 13841 * 1367423
18921675043 == 284233 * 66571
18957201643 == 15077 * 1257359
18970162543 == 285227 * 66509
18916705243 == 95891 * 197273
18912076543 == 646147 * 29269
18927016543 == 46171 * 409933
18962107543 == 16223 * 1168841
18976105243 == 36527 * 519509
18950126743 == 76603 * 247381
18950726143 == 1106741 * 17123
18907652143 == 87049 * 217207
18927610543 == 657049 * 28807
18965172043 == 37309 * 508327
18910725643 == 28657 * 659899
18910765243 == 639547 * 29569

〇〇 发表于 2009-8-22 20:05:14

如果再限制素数也0~9都出现就少多了

〇〇 发表于 2009-8-22 21:31:34

22# medie2005
你的prime[]初始化了多少个质数,我用了10000个质数(2~104729)还是求不出来,难道要200万个?

medie2005 发表于 2009-8-22 22:03:06

10000-2000000

〇〇 发表于 2009-8-23 08:20:43

medie2005
看了你的算法,是利用hash把尾数相同的质数在一起运算
利用(a*10^4+b)(c*10^4+d)最后4位相同,减少判断次数,我觉得还要加上
temp2>=189e8/temp1 && temp2<=189e8/temp1

〇〇 发表于 2009-8-24 13:27:53

本帖最后由 〇〇 于 2009-8-24 13:45 编辑

我算过了,仅189...3这种形式的就有1426个.
medie2005 发表于 2009-8-22 09:04 http://bbs.emath.ac.cn/images/common/back.gif
c语言的速度还是很快的
10分钟计算完189....3
C:\vc6>copy con cr

^Z
已复制         1 个文件。

C:\vc6>copy con t.bat
time <cr
pm2 >1893.txt
time <cr

^Z
已复制         1 个文件。

C:\vc6>t

C:\vc6>time0<cr
当前时间: 13:10:44.62
输入新时间:

C:\vc6>pm21>1893.txt

C:\vc6>time0<cr
当前时间: 13:20:42.00
输入新时间:
改为:
if( temp>189e8 &&temp<190e8 )
...
//if( s/100000000==189 )
缩短到2分钟
C:\vc6>time0<cr
当前时间: 13:35:45.43
输入新时间:

C:\vc6>pm21>1893.txt

C:\vc6>time0<cr
当前时间: 13:37:52.96
输入新时间:

〇〇 发表于 2009-8-24 16:21:37

我算过了,仅189...3这种形式的就有1426个.
medie2005 发表于 2009-8-22 09:04 http://bbs.emath.ac.cn/images/common/back.gif
你的代码是怎么保证不出现重复的电话号码的
(temp1 temp2互换的情况)

〇〇 发表于 2009-8-25 11:17:53


你的代码是怎么保证不出现重复的电话号码的
(temp1 temp2互换的情况)
〇〇 发表于 2009-8-24 16:21 http://bbs.emath.ac.cn/images/common/back.gif
看出来了,通过for(j=i保证

〇〇 发表于 2009-8-25 11:34:27

29# 〇〇
pm2通过优化编译器参数,cl -O2 pm2.cpp
计算189..43从14秒到9秒
再局部优化代码pm21,
if( digx!=1 && digx!=2 ) goto end;
提早退出,没有提高
页: 1 2 [3] 4 5 6 7 8 9
查看完整版本: 猜猜我的手机号码?