世界一の素数の表示 会社員 2006/03/06 22:21:56 └画面に表示させると遅いので,一旦,ファイ... 白石 和夫 2006/03/07 08:02:21 └白石先生、ありがとうございました 会社員 2006/03/22 22:18:44
世界一の素数の表示 会社員 2006/03/06 22:21:56 ツリーへ
世界一の素数の表示 |
返事を書く |
会社員 2006/03/06 22:21:56 | |
世界一の素数だけあって 表示するだけの計算に1週間もかかりました。 何か速く表示する方法ありますか? ! 43番目のメルセンヌ素数の計算 2^30402457-1 ! 2^30402457-1は、9152052桁の数→500桁区切りで18304桁以上の配列を準備する OPTION ARITHMETIC RATIONAL DIM HAKO(20000) PRINT "メルセンヌ素数表示プログラム" LET MJ_30402457=30402457 LET JJJ=10^500 LET HAKO(1)=1 LET n=1500 PRINT "n=";n LET nbki2=2^n ! 2^n処理 PRINT "×2^n=";nbki2 IF nbki2/10^500<1 THEN PRINT "OK" PRINT nbki2/10^500 PRINT "まずINT(MJ_30402457/n)=";INT(MJ_30402457/n);"回処理します" FOR L=1 TO INT(MJ_30402457/n) CALL BY2n(nbki2) !各桁を2^xx倍する IF L/100=INT(L/100) THEN PRINT DATE$;" ";TIME$,"L=";L;"回目" NEXT L PRINT "余りを処理" CALL BY2n(2^MOD(MJ_30402457,n)) !各桁を2^xx倍する LET HAKO(1)=HAKO(1)-1 CALL PRT !印刷処理 !----------------サブルーチン------------------- SUB BY2n(Jbki2) FOR J=1 TO 20000 LET HAKO(J)=HAKO(J)*Jbki2 NEXT J CALL KT_UP !桁処理 END SUB SUB KT_UP !桁上処理 FOR J=1 TO 20000 IF HAKO(J)>=JJJ THEN ! LET HT=1 LET HAKO(J+1)=HAKO(J+1)+INT(HAKO(J)/JJJ) LET HAKO(J)=HAKO(J)-INT(HAKO(J)/JJJ)*JJJ END IF NEXT J END SUB SUB PRT ! 印刷ルーチン FOR I=20000 TO 1 STEP -1 IF HAKO(I)<>0 THEN LET p$=STR$(HAKO(I)) LET p$=REPEAT$("0",500-LEN(p$))&p$ PRINT SUBSTR$(p$,001,100);" :";(I-1)*5+4 PRINT SUBSTR$(p$,101,200);" :";(I-1)*5+3 PRINT SUBSTR$(p$,201,300);" :";(I-1)*5+2 PRINT SUBSTR$(p$,301,400);" :";(I-1)*5+1 PRINT SUBSTR$(p$,401,500);" :";(I-1)*5+0 END IF NEXT I END SUB END |
└画面に表示させると遅いので,一旦,ファイ... 白石 和夫 2006/03/07 08:02:21 ツリーへ
Re: 世界一の素数の表示 |
返事を書く |
白石 和夫 2006/03/07 08:02:21 | |
画面に表示させると遅いので,一旦,ファイルに出力するのがよいかも知れません。 http://hp.vector.co.jp/authors/VA008683/QA8.htm |
└白石先生、ありがとうございました 会社員 2006/03/22 22:18:44 ツリーへ
Re: 画面に表示させると遅いので,一旦,ファイ... |
返事を書く |
会社員 2006/03/22 22:18:44 | |
白石先生、ありがとうございました 計算時間の方が圧倒的に時間がかかっていますので とりあえず2進モードで動かすことにしました。 |