結果
問題 |
No.1653 Squarefree
|
ユーザー |
![]() |
提出日時 | 2021-07-31 02:49:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 346 ms / 2,000 ms |
コード長 | 935 bytes |
コンパイル時間 | 159 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 100,352 KB |
最終ジャッジ日時 | 2024-10-14 08:16:59 |
合計ジャッジ時間 | 10,948 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
import sys read=sys.stdin.buffer.read readline=sys.stdin.buffer.readline readlines=sys.stdin.buffer.readlines import math def prime_sieve(n): isprime=[True]*(n+1) isprime[0]=False isprime[1]=False for i in range(2, n+1): if isprime[i]: for j in range(2*i, n+1, i): isprime[j]=False return isprime isprime=prime_sieve(1000000) l, r=map(int, readline().split()) v=list(range(l, r+1)) sqf=[True]*(r-l+1) for p in range(2, 1000000): if not isprime[p]: continue for i in range((l+p-1)//p*p, r+1, p): if not sqf[i-l]: continue v[i-l]//=p if v[i-l]%p==0: sqf[i-l]=False ans=0 for i in range(r-l+1): if not sqf[i]: continue if v[i]==1: ans+=1 continue sq=int(math.sqrt(v[i])) ans+=1 for j in range(sq, sq+2): if j*j==v[i]: ans-=1 break print(ans)