結果
問題 |
No.2751 429-like Number
|
ユーザー |
|
提出日時 | 2024-05-10 22:03:46 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,039 bytes |
コンパイル時間 | 349 ms |
コンパイル使用メモリ | 82,256 KB |
実行使用メモリ | 156,872 KB |
最終ジャッジ日時 | 2024-12-20 05:41:38 |
合計ジャッジ時間 | 17,511 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 RE * 2 |
other | AC * 5 WA * 1 RE * 16 |
ソースコード
import random def mr_test_normal(n: int): assert n > 1 if n == 2: return True elif n%2 == 0: return False d = n - 1 s = 0 while d & 1 == 0: s += 1; d >>= 1 k = 20 for _ in range(k): a = random.randint(2, n-1) x = pow(a, d, n) # a^d mod n if x == 1 or x == n-1: continue for _ in range(s): x = pow(x, 2, n) if x == n-1: # a^(d*2^r) mod n break else: return False return True P=[] prime = [True for i in range(10**7+1)] p = 2 while (p * p <= 10**7+1): if prime[p] ==1: P.append(p) for i in range(p * 2, 10**7+1, p): prime[i] = 0 p += 1 S=set(P) l=len(P) t=int(input()) for _ in range(t): n=int(input()) flag=0 for i in range(l): if n%P[i]==0: n//=P[i] for j in range(i,l): if n%P[j]==0: n//=P[j] if mr_test_normal(n): flag=1 break if flag: break print("Yes" if flag else "No")