lyg_wangyushi 发表于 2008-3-12 21:14:52

1000:0.062466592946666251001:0.062458712715437971002:0.06245083943764704
1003:0.062442971119713611004:0.062435115669830641005:0.06242726318389556
1006:0.062419423517540681007:0.062411614256497581008:0.06240382157148616
1009:0.062396031804719031010:0.062388248839544431011:0.06238048814184079
1012:0.062372741899677401013:0.062365002385854391014:0.06235727342286197
1015:0.062349556893543461016:0.062341847043550441017:0.06233414005294053
1018:0.062326437823847121019:0.062318744151729621020:0.06231106091363917
1021:0.062303384301477821022:0.062295714304641501023:0.06228806784406648
1024:0.062280435437762841025:0.062272809573254721026:0.06226518837516718
1027:0.062257575563286121028:0.062249974833758191029:0.06224239169636828
1030:0.062234818707963811031:0.062227248483087521032:0.06221968837514400
1033:0.062212131022007221034:0.062204578256313161035:0.06219703190446840
1036:0.062189504731298311037:0.062181983930145651038:0.06217446767438230
1039:0.062166965023522601040:0.062159466897238251041:0.06215197148340764
1042:0.062144480586519201043:0.062137003209478351044:0.06212953212576914
1045:0.062122072703014221046:0.062114635605839191047:0.06210720829080799
1048:0.062099787188132541049:0.062092374058469401050:0.06208497065152311
1051:0.062077569892117751052:0.062070196383400311053:0.06206282725169150
1054:0.062055464239797831055:0.062048103847882311056:0.06204075478903499
1057:0.062033410080287621058:0.062026078392534371059:0.06201875276617408
1060:0.062011457300609301061:0.062004172975776621062:0.06199689634475025
1063:0.061989625687268741064:0.061982364398093711065:0.06197510566002156
1066:0.061967851170303661067:0.061960614471580051068:0.06195338705825081
1069:0.061946167225240881070:0.061938961668974131071:0.06193175862656584
1072:0.061924564787719681073:0.061917383462799381074:0.06191020630000086
1075:0.061903031632449581076:0.061895867758866381077:0.06188870968464886
1078:0.061881565657212101079:0.061874427398398251080:0.06186729654356381
1081:0.061860169795891481082:0.061853050430050081083:0.06184593515909299
1084:0.061838825613724651085:0.061831723417145611086:0.06182462692645157
1087:0.061817536133135091088:0.061810455897637081089:0.06180338133475535
1090:0.061796310818643381091:0.061789245960884301092:0.06178218675307431
1093:0.061775134797047241094:0.061768098103255571095:0.06176106541532397
1096:0.061754049504223741097:0.061747037576268231098:0.06174003598452582
1099:0.061733036774007221100:0.061726046281789581101:0.06171906132690876
1102:0.061712078742755931103:0.061705104838502031104:0.06169814116568423
1105:0.061691179849971071106:0.061684222459664321107:0.06167728150968573
1108:0.061670346023178411109:0.061663434631715541110:0.06165652865852350
1111:0.061649626550759191112:0.061642731390648381113:0.06163584470408927
1114:0.061628968006030131115:0.061622096675000361116:0.06161522764181844
1117:0.061608380744647451118:0.061601536129521941119:0.06159469683384863
1120:0.061587861333145721121:0.061581028107656631122:0.06157420774791494
1123:0.061567397195127881124:0.061560588901730201125:0.06155378587499778
1126:0.061546991108922601127:0.061540203087404021128:0.06153343373275796
1129:0.061526674045431501130:0.061519919552726991131:0.06151317912108979
1132:0.061506443855665381133:0.061499712275950411134:0.06149299173040610
1135:0.061486276322332451136:0.061479564579474431137:0.06147286234851624
1138:0.061466166687657021139:0.061459476128531341140:0.06145279502448432
1141:0.061446117550288461142:0.061439445151814111143:0.06143278216025661
1144:0.061426124223531751145:0.061419475655047771146:0.06141282924495632
1147:0.061406195040652021148:0.061399575853949351149:0.06139296023323457
1150:0.061386346750499111151:0.061379741096054851152:0.06137314892109018
1153:0.061366563112642801154:0.061359980836217551155:0.06135340913429657
1156:0.061346840950040671157:0.061340274874802521158:0.06133371371586843
1159:0.061327168660515121160:0.061320628491094151161:0.06131409876811565
1162:0.061307573909249191163:0.061301053907769951164:0.06129454152554242
1165:0.061288033983178521166:0.061281528513060361167:0.06127503063070292
1168:0.061268534814882851169:0.061262042440736951170:0.06125555213006413
1171:0.061249077597548531172:0.061242605117616421173:0.06123613605612729
1174:0.061229671774901051175:0.061223212267381811176:0.06121676160757069
1177:0.061210315702378781178:0.061203879963160781179:0.06119745165941505
1180:0.061191032121844571181:0.061184617295120401182:0.06117820851568234
1183:0.061171803091274881184:0.061165422387917081185:0.06115905165336985
1186:0.061152689534192351187:0.061146332044896771188:0.06113997785887942
1189:0.061133628292168561190:0.061127280703310481191:0.06112094167181579
1192:0.061114607239058841193:0.061108281330018461194:0.06110196653397319
1195:0.061095653695195011196:0.061089348023433721197:0.06108304820410573
1198:0.061076763293291441199:0.061070480322064891200:0.06106420574276539
1201:0.061057935673380161202:0.061051668821725291203:0.06104540646981004
1204:0.061039156300211411205:0.061032908050001541206:0.06102666810438760
1207:0.061020432621798001208:0.061014200323501431209:0.06100797629000928
1210:0.061001757966057591211:0.060995544076074291212:0.06098933840468595
1213:0.060983135888830701214:0.060976937785782741215:0.06097074786214192
1216:0.060964562334307671217:0.060958378688670761218:0.06095220318682813
1219:0.060946035808179251220:0.060939871548463641221:0.06093371662759217
1222:0.060927566055609971223:0.060921426020735881224:0.06091529031462039
1225:0.060909156462005881226:0.060903029396674231227:0.06089690787396876
1228:0.060890798020665471229:0.060884692455838361230:0.06087860824553999
1231:0.060872525858863451232:0.060866461046084841233:0.06086039804568180
1234:0.060854348905631551235:0.060848303971797661236:0.06084226083901667
1237:0.060836224301578531238:0.060830195540870821239:0.06082416857212605
1240:0.060818145780901961241:0.060812125970372331242:0.06080611151819446
1243:0.060800110717689361244:0.060794114060157291245:0.06078811917660929
1246:0.060782130789339401247:0.060776147707265441248:0.06077016756875248
1249:0.060764191546767161250:0.060758220809659291251:0.06075225300484546
1252:0.060746292811280771253:0.060740343708077241254:0.06073440217000543
1255:0.060728472813159771256:0.060722546349530121257:0.06071662393205723
1258:0.060710705555613911259:0.060704792367189291260:0.06069888205734924
1261:0.060692973473483051262:0.060687074652074421263:0.06068118327505742
1264:0.060675293613475841265:0.060669410233895351266:0.06066353198467203
1267:0.060657659994353121268:0.060651789708860591269:0.06064592226282124
1270:0.060640058787788571271:0.060634203804802401272:0.06062835616242563
1273:0.060622521463535971274:0.060616691814390521275:0.06061087837890434
1276:0.060605066615707591277:0.060599257637789851278:0.06059346033006596
1279:0.060587665794316701280:0.060581872920639071281:0.06057608281522756
1282:0.060570300999553681283:0.060564525248528641284:0.06055875664911456
1285:0.060552989697714781286:0.060547229877520951287:0.06054147935706530
1288:0.060535730474779001289:0.060529997381638101290:0.06052426917141934
1291:0.060518553403247521292:0.060512842489460301293:0.06050713426924622
1294:0.060501429816123821295:0.060495729125478751296:0.06049003648135290
1297:0.060484346514606461298:0.060478661361254221299:0.06047298314687423
1300:0.060467308662202481301:0.060461637902691821302:0.06045596980126661
1303:0.060450312837684571304:0.060444658519768781305:0.06043901423379252
1306:0.060433371528701141307:0.060427735664527991308:0.06042210347740295
1309:0.060416473914049051310:0.060410848020212191311:0.06040522997426964
1312:0.060399621838537191313:0.060394019424861411314:0.06038842168462368
1315:0.060382829646316001316:0.060377254645887021317:0.06037168324654717
1318:0.060366117497192831319:0.060360555337651951320:0.06035499676362693
1321:0.060349439724978231322:0.060343886265907191323:0.06033834148172398
1324:0.060332800262008511325:0.060327260568659691326:0.06032172748046666
1327:0.060316197942701471328:0.060310683066780951329:0.06030516970330469
1330:0.060299661878872941331:0.060294158578528061332:0.06028866380421123
1333:0.060283172533257211334:0.060277685760477271335:0.06027220248150333
1336:0.060266724684313341337:0.060261259306179271338:0.06025580431755737
1339:0.060250354755803051340:0.060244906672363701341:0.06023946400304647
1342:0.060234022808574161343:0.060228587996446701344:0.06022315563530334
1345:0.060217726702135101346:0.060212308027906521347:0.06020689179078968
1348:0.060201477015019311349:0.060196068563216681350:0.06019066932843659
1351:0.060185275415959811352:0.060179882953329591353:0.06017449580061691
1354:0.060169110094378601355:0.060163726797421061356:0.06015835359684971
1357:0.060152988542573701358:0.060147636377030271359:0.06014228659170811
1360:0.060136941085833811361:0.060131598903983781362:0.06012625909411751
1363:0.060120925442108811364:0.060115595100283991365:0.06011026900875389
1366:0.060104949045128011367:0.060099635195862241368:0.06009432463341673
1369:0.060089016416418811370:0.060083712416382061371:0.06007841916359231
1372:0.060073127309530521373:0.060067843368347521374:0.06006256639010203
1375:0.060057294506806141376:0.060052025860915561377:0.06004676321733823
1378:0.060041506562937691379:0.060036256802811531380:0.06003101025410902
1381:0.060025765997076251382:0.060020531344072231383:0.06001529897275813
1384:0.060010072525055201385:0.060004849261714171386:0.05999962736203079
1387:0.059994408641724441388:0.059989193097201991389:0.05998398524989778
1390:0.059978781468753521391:0.059973588051014421392:0.05996839598209822
1393:0.059963216916895531394:0.059958041874441321395:0.05995286995674319
1396:0.059947700268896621397:0.059942539926272111398:0.05993738180391377
1399:0.059932229445811491400:0.059927088137632221401:0.05992195607561820
1402:0.059916826210360471403:0.059911700294866381404:0.05990657919902102
1405:0.059901459416164941406:0.059896347061516471407:0.05989123601560286
1408:0.059886130633622161409:0.059881030903516251410:0.05987594632926954
1411:0.059870863050015841412:0.059865781927801631413:0.05986070382262496
1414:0.059855631311496861415:0.059850561807701531416:0.05984549530792944
1417:0.059840432665571941418:0.059835373019620681419:0.05983031551196963
1420:0.059825259286539731421:0.059820206050684801422:0.05981516346398239
1423:0.059810123001905701424:0.059805091444489871425:0.05980006453926633
1426:0.059795040590300581427:0.059790019594365541428:0.05978500491520809
1429:0.059779992338288891430:0.059774982701790261431:0.05976997600251043
1432:0.059764970561089901433:0.059759970563552791434:0.05975497349268034
1435:0.059749981014320191436:0.059744989787103221437:0.05974000314243357
1438:0.059735019409794671439:0.059730044393603301440:0.05972507144843690
1441:0.059720109658003371442:0.059715149927942911443:0.05971019143338774
1444:0.059705235819524901445:0.059700289648054471446:0.05969534470565008
1447:0.059690409982602581448:0.059685477298528331449:0.05968054746642306
1450:0.059675618855681761451:0.059670692279370721452:0.05966576854867682
1453:0.059660854954956271454:0.059655944192345771455:0.05965103706524267
1456:0.059646131955706841457:0.059641228056014681458:0.05963633822834755
1459:0.059631451205629501460:0.059626567784844501461:0.05962169115379969
1462:0.059616819702606471463:0.059611949445298851464:0.05960708356092653
1465:0.059602218867907601466:0.059597358538553611467:0.05959250098222967
1468:0.059587646986873941469:0.059582794967739751470:0.05957794650204135
1471:0.059573103160321001472:0.059568268858352291473:0.05956343730114098
1474:0.059558611615545811475:0.059553787884144211476:0.05954897467894869
1477:0.059544163418168301478:0.059539353323377271479:0.05953454827509033
1480:0.059529747489002511481:0.059524950184829001482:0.05952015481302647
1483:0.059515362915851291484:0.059510576029105061485:0.05950579106681278
1486:0.059501011869072291487:0.059496235356920971488:0.05949146535488802
1489:0.059486698028551391490:0.059481934138263201491:0.05947717215490412
1492:0.059472412838895891493:0.059467656187465111494:0.05946290295781221
1495:0.059458152386352771496:0.059453405986385791497:0.05944866450732157
1498:0.059443924162492021499:0.059439186462311701500:0.05943445140404178
1501:0.059429722750099221502:0.059424997479943381503:0.05942027483848427
1504:0.059415554823007391505:0.059410839677001271506:0.05940612864380193
1507:0.059401418731121061508:0.059396711431118601509:0.05939201120864245
1510:0.059387312845284441511:0.059382617082428011512:0.05937792391740134
1513:0.059373233347536631514:0.059368547590031501515:0.05936386884879184
1516:0.059359193423978991517:0.059354520575563341518:0.05934985177035800
1519:0.059345186268292881520:0.059340527724744061521:0.05933587100907862
1522:0.059331219768896051523:0.059326571079734501524:0.05932192930122893
1525:0.059317291514558521526:0.059312656989086641527:0.05930802644361165
1528:0.059303400593331361529:0.059298775825290081530:0.05929415358070163
1531:0.059289536015591381532:0.059284923120857431533:0.05928032346819850
1534:0.059275725599318631535:0.059271130225599791536:0.05926653805621686
1537:0.059261947665228071538:0.059257359761870851539:0.05925277292389872
1540:0.059248187860606621541:0.059243609529112871542:0.05923903579256310
1543:0.059234464526586371544:0.059229896433386201545:0.05922533080504785
1546:0.059220767639102481547:0.059216206230519011548:0.05921165148809685
1549:0.059207097796526601550:0.059202545855433601551:0.05919799496406182
1552:0.059193452802244581553:0.059188912382454581554:0.05918437439944588
1555:0.059179838850790851556:0.059175308510222011557:0.05917078889603807
1558:0.059166271697099521559:0.059161756221887961560:0.05915724315786920
1561:0.059152734565295631562:0.059148228376938401563:0.05914372938641760
1564:0.059139232106409511565:0.059134737902282571566:0.05913024540529083
1567:0.059125755978109491568:0.059121268935840531569:0.05911678427613213
1570:0.059112301316833111571:0.059107828872154531572:0.05910335744247965
1573:0.059098889730827791574:0.059094426405570571575:0.05908996611223481
1576:0.059085509519270611577:0.059081055949547301578:0.05907661075686431
1579:0.059072167904284271580:0.059067729391405441581:0.05906329254551110
1582:0.059058860693440461583:0.059054430503605231584:0.05905000263898023
1585:0.059045575770201531586:0.059041158505611851587:0.05903674619274244
1588:0.059032339478836881589:0.059027933751582701590:0.05902353229503572
1591:0.059019133134843791592:0.059014735613561111593:0.05901034496289423
1594:0.059005957902827101595:0.059001573124800591596:0.05899719062661112
1597:0.058992810406058251598:0.058988433110635971599:0.05898405938533674
1600:0.058979689872084991601:0.058975325209177261602:0.05897096409661280
1603:0.058966607816484521604:0.058962257000590141605:0.05895791099506197
1606:0.058953568510640151607:0.058949230818894841608:0.05894489536027758
1609:0.058940565315808301610:0.058936237496929101611:0.05893191253637307
1612:0.058927589796511231613:0.058923272440675901614:0.05891896171769392
1615:0.058914654461189961616:0.058910348149190741617:0.05890604403958680
1618:0.058901741501858401619:0.058897439906773191620:0.05889313988195704
1621:0.058888843934777681622:0.058884548927561951623:0.05888025736361417
1624:0.058875966737849851625:0.058871678299745271626:0.05886739703450639
1627:0.058863117947711711628:0.058858839793925261629:0.05885456319436165
1630:0.058850292490987851631:0.058846024575077271632:0.05884176006137518
1633:0.058837498327467651634:0.058833243681554901635:0.05882898995849210
1636:0.058824739616034291637:0.058820495100584691638:0.05881625517446196
1639:0.058812016776020331640:0.058807779293725061641:0.05880354333757050
1642:0.058799313171155301643:0.058795083917528661644:0.05879085618445053
1645:0.058786630578457261646:0.058782407704340571647:0.05877818816463026
1648:0.058773969533455021649:0.058769760268287551650:0.05876555250998095
1651:0.058761354070850421652:0.058757156531449681653:0.05875296228799679

无心人 发表于 2008-3-13 08:07:51

我觉得算这种东西只有理论意义

实际上, 参与的小素数不要太多, 否则不合算的
如果实现位运算, 乘到29就可以了
否则如果是双字, 乘的更少

要看综合效益
这算法存在拷贝的消耗
假设每次都计算N个数字的筛, 占字节<= N
则拷贝消耗是c0 * N   (c0<= 2)

假设须剔除素数为p0, p1, ...pn, p0 >> 2
则, 运算工作量为 c1 * N / 2 * (1/p0 + 1/p1 ... + pn) (c1 > 10)
那么总工作量c0 * N + c1* N / 2 * (1/p0 + 1/p1 ... + pn)
                   = N * (c0 + c1/2p0 + c1/2p1 ... + c1/2pn)

理论上可证明p0越大, 工作量越小
但素数乘积如果太大, 比如超过64位, 将存在高精度运算问题
除非使用X86-64CPU在64位操作环境下, 否则总会遇到高精度计算的麻烦
而且N必须被小于p0素数整除, 才能有高效的加法筛, 否则小素数还要筛一次
决定了p0不能太大, 否则N太大
一般建议不要超过32位,N要< 1M, 采用位运算的可适当大些

无心人 发表于 2008-3-13 08:09:04

我给出的算法曾在查找很大的相邻素数差时使用过
速度达到1200亿/小时的筛速度

mathe 发表于 2008-3-13 08:16:57

通常数学里面把无穷乘积中结果为0和无穷都表示发散。
将这个乘积取倒数,也就是
$1/(1-1/p_1)xx1/(1-1/p_2)xx...xx1/(1-1/p_n)xx...$
将每一项按泰勒级数展开就成为
$(1+1/p_1+1/p_1^2+1/p_1^3+...)(1+1/p_2+1/p_2^2+...)...(1+1/p_n+1/p_n^2+...)...$
现在将乘积式展开,我们可以由算术基本定理(唯一因子分解),知道,展开后,每个正整数正好在一项的分母中出现,也就是上面乘积就是
$1+1/2+1/3+...+1/n+...$
我们知道这个级数是发散的,所以原来的无穷乘积也是发散的。

lyg_wangyushi 发表于 2008-3-13 16:36:41

谢谢无心人和mathe的回复,原来无穷乘积为0也表示为发散,学习了:)

mathe 发表于 2008-3-13 16:55:39

无穷乘积为0也表示发散,数学里面有一个结论:
无穷乘积
$\prod a_i$
同无穷级数
$\sum log(a_i)$
同敛散

sir_chen 发表于 2009-12-8 21:22:00

不知道有没有比筛法更好的求质数的方法
页: 1 [2]
查看完整版本: 快速生成素数表的方法