結果
| 問題 |
No.36 素数が嫌い!
|
| コンテスト | |
| ユーザー |
yaoshimax
|
| 提出日時 | 2015-02-21 16:24:47 |
| 言語 | Python2 (2.7.18) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 730 bytes |
| コンパイル時間 | 168 ms |
| コンパイル使用メモリ | 7,068 KB |
| 実行使用メモリ | 257,612 KB |
| 最終ジャッジ日時 | 2024-06-23 21:48:20 |
| 合計ジャッジ時間 | 82,847 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 24 WA * 2 |
ソースコード
# I hate Math
N=int(raw_input())
upperbound=10000001
isOKsize=(upperbound-3)/2+1
isOK=[True for i in range(isOKsize)]
for i in range(isOKsize):
if (i+i+3)*i+i > isOKsize:
break
if isOK[i]:
#i+i+3 is prime
p=i+i+3
#delete j s.t. j+j+3 = (2i+3)^2 = 4i^2+12i+9 => j=2i^2+6i+3=p*(i+1)+i
#next j is j+j+3 = (2i+3)(2i+5). that is, step of j is 2i+3=p
for k in range( p*i+p+i, isOKsize, p):
isOK[k]=False
primes = [2] + [i+i+3 for i in range(isOKsize) if isOK[i]]
cnt = 0
for p in primes:
#print p
if p*p > N:
break
while cnt<2 and N%p==0:
cnt+=1
N/=p
if cnt >= 2:
break
if cnt>=2:
print "YES"
else:
print"NO"
yaoshimax