結果
| 問題 | 
                            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