๐ฉ๐ป๐พ
[๋ฐฑ์ค/Python] 1456๋ฒ ๊ฑฐ์ ์์ ๋ณธ๋ฌธ
1๏ธโฃ๋ฌธ์ ์ค๋ช
์ด๋ค ์๊ฐ ์์์ N์ ๊ณฑ(N ≥ 2) ๊ผด์ผ ๋, ๊ทธ ์๋ฅผ ๊ฑฐ์ ์์๋ผ๊ณ ํ๋ค.
๋ ์ ์ A์ B๊ฐ ์ฃผ์ด์ง๋ฉด, A๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , B๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฑฐ์ ์์๊ฐ ๋ช ๊ฐ์ธ์ง ์ถ๋ ฅํ๋ค.
2๏ธโฃ์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ผ์ชฝ ๋ฒ์ A์ ์ค๋ฅธ์ชฝ ๋ฒ์ B๊ฐ ๊ณต๋ฐฑ ํ ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค.
3๏ธโฃ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ด ๋ช ๊ฐ๊ฐ ์๋์ง ์ถ๋ ฅํ๋ค.
๐ฉ๐ป๐ป์์ฑํ ์ฝ๋
import math
minV, maxV = map(int, input().split()) # ์ผ์ชฝ ๋ฒ์, ์ค๋ฅธ์ชฝ ๋ฒ์
prime = [True] * (int(maxV ** 0.5) + 1) # ์์ ํ๋ณ ์ฌ๋ถ ์ ์ฅ
prime[1] = False
cnt = 0
for i in range(2, int(maxV ** 0.5) + 1):
if prime[i]:
if i * i > int(maxV ** 0.5):
break
# ์๋ผํ ์คํ
๋ค์ค์ ์ฒด
for j in range(i ** 2, int(maxV ** 0.5) + 1, i):
prime[j] = False
for i in range(1, len(prime)):
if prime[i]:
temp = i * i
while True:
if temp < minV:
temp *= i
continue
if temp > maxV:
break
cnt += 1
temp *= i
print(cnt)
๐ก์ฝ๋ ์ค๋ช
prime ๋ฆฌ์คํธ๋ ์ฐ์ ์ฒ์์๋ ๋ชจ๋ ์๋ฅผ ์์๋ผ๊ณ ๊ฐ์ ํ๊ณ True ๋ก ์ด๊ธฐํ ํด์ค ๋ค์, prime[1]์ผ ๋์ ๊ฐ์ ๋ฐ๋ก False์์ ์ ์ฅํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ # ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ์ฃผ์ ๋ฐ์ ์์ฑ๋ for๋ฌธ์ ํตํด prime์ ์ ์ฅ๋ ์์์ ๋ฐฐ์๋ค์ ๊ฐ์ False๋ก ์ ์ฅํด์ ์์๋ค๋ง True ์ํ๋ก ๋จ๊ฒจ์ง๊ฒ ํ๋ค.
๋ง์ง๋ง for๋ฌธ์์ ๋ง์ฝ i๊ฐ ์์๋ผ๋ฉด, temp์ i์ ์ ๊ณฑ์ ์ ์ฅํ๊ณ ์ฃผ์ด์ง ๋ฒ์ ๋ด์ ์กด์ฌํ๋ ์์์ N์ ๊ณฑ์ ๊ฐ์๋ฅผ while๋ฌธ์ ํตํด ์นด์ดํธํ๊ฒ ๋๋ค.
'์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/Python] 1033๋ฒ ์นตํ ์ผ (0) | 2023.03.16 |
---|---|
[๋ฐฑ์ค/Python] 1934๋ฒ ์ต์๊ณต๋ฐฐ์ (0) | 2023.03.15 |
[๋ฐฑ์ค/Python] 11689๋ฒ GCD(n, k) = 1 (0) | 2023.03.14 |
[๋ฐฑ์ค/Python] 1747๋ฒ ์์ & ํฐ๋ฆฐ๋๋กฌ ์ ์ค์์ ์ต์๊ฐ ์ฐพ๊ธฐ (0) | 2023.03.14 |
[๋ฐฑ์ค/Python] 1181๋ฒ ๋จ์ด ์ ๋ ฌ (0) | 2023.03.10 |