結果
問題 | No.8030 ミラー・ラビン素数判定法のテスト |
ユーザー |
👑 ![]() |
提出日時 | 2020-09-18 03:21:15 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 3,819 ms / 9,973 ms |
コード長 | 995 bytes |
コンパイル時間 | 406 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 79,232 KB |
最終ジャッジ日時 | 2024-11-16 23:31:50 |
合計ジャッジ時間 | 9,020 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 |
ソースコード
#Miller-Rabinの素数判定法def Miller_Rabin_Primality_Test(N,Times=20):"""Miller-Rabinによる整数Nの素数判定を行う.N:整数※:Trueは正確にはProbably Trueである(Falseは確定False)."""from random import randint as riif N==2:return Trueif N==1 or N%2==0:return Falseq=N-1k=0while q&1==0:k+=1q>>=1for _ in range(Times):m=ri(2,N-1)y=pow(m,q,N)if y==1:continueflag=Truefor i in range(k):if (y+1)%N==0:flag=Falsebreaky*=yy%=Nif flag:return Falsereturn True#================================================N=int(input())Y=[0]*Nfor i in range(N):x=int(input())if Miller_Rabin_Primality_Test(x,100):Y[i]="{} {}".format(x,1)else:Y[i]="{} {}".format(x,0)print("\n".join(map(str,Y)))