๐Ÿ‘ฉ๐Ÿป‍๐ŸŒพ

[๋ฐฑ์ค€/Python] 1456๋ฒˆ ๊ฑฐ์˜ ์†Œ์ˆ˜ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€/Python] 1456๋ฒˆ ๊ฑฐ์˜ ์†Œ์ˆ˜

์ฅฌ์Šค์ด 2023. 3. 15. 13:15
728x90

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๋ฌธ์„ ํ†ตํ•ด ์นด์šดํŠธํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

728x90
Comments