๋ฌธ์
์์ฐ์ M๊ณผ N์ด ์ฃผ์ด์ง ๋ M์ด์ N์ดํ์ ์์ฐ์ ์ค ์์์ธ ๊ฒ์ ๋ชจ๋ ๊ณจ๋ผ ์ด๋ค ์์์ ํฉ๊ณผ ์ต์๊ฐ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ฅผ ๋ค์ด M=60, N=100์ธ ๊ฒฝ์ฐ 60์ด์ 100์ดํ์ ์์ฐ์ ์ค ์์๋ 61, 67, 71, 73, 79, 83, 89, 97 ์ด 8๊ฐ๊ฐ ์์ผ๋ฏ๋ก, ์ด๋ค ์์์ ํฉ์ 620์ด๊ณ , ์ต์๊ฐ์ 61์ด ๋๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ์งธ ์ค์ M์ด, ๋์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค.
M๊ณผ N์ 10,000์ดํ์ ์์ฐ์์ด๋ฉฐ, M์ N๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
M์ด์ N์ดํ์ ์์ฐ์ ์ค ์์์ธ ๊ฒ์ ๋ชจ๋ ์ฐพ์ ์ฒซ์งธ ์ค์ ๊ทธ ํฉ์, ๋์งธ ์ค์ ๊ทธ ์ค ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๋จ, M์ด์ N์ดํ์ ์์ฐ์ ์ค ์์๊ฐ ์์ ๊ฒฝ์ฐ๋ ์ฒซ์งธ ์ค์ -1์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
60
100
์์ ์ถ๋ ฅ 1
620
61
์์ ์ ๋ ฅ 2
64
65
์์ ์ถ๋ ฅ 2
-1
ํ์ด
(1) m๊ณผ n ์ฌ์ด ์ซ์๋ฅผ ๊ฐ๊ฐ ์์ ํ๋ณ
1. ์์๋ฉด True๋ฅผ, ์๋๋ฉด False๋ฅผ ๋ฐํํ๋ ํจ์ is_prime(a)
1-1. a๊ฐ 1์ด๋ฉด return False
1-2. a๋ฅผ 2~a-1์ ์๋ก ๋๋ด์ ๋ ๋๋จธ์ง๊ฐ 0์ด ๋๋ฉด return False
1-3. a๋ฅผ 2~a-1์ ์๋ก ๋ชจ๋ ๋๋ด๋๋ฐ ํ๋ฒ๋ ๋๋จธ์ง๊ฐ 0์ด ๋์ง ์์ผ๋ฉด return True
2. m๊ณผ n ์ฌ์ด์ ์์๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ mn
3. m๋ถํฐ n๊น์ง a๋ฅผ ์์ ํ๋ณ, is_prime์ด True๋ฅผ ๋ฐํํ ๋๋ง mn์ a ์ถ๊ฐ
4. mn์ด ๋น์ด์์ผ๋ฉด -1์ถ๋ ฅ
5. mn์ด ๋น์ด์์ง ์์ผ๋ฉด mn์ ํฉ๊ณผ ์ต์๊ฐ ์ถ๋ ฅ
# 2581-1.py
m = int(input())
n = int(input())
mn = []
def is_prime(a):
if a == 1:
return False
for j in range(2, i):
if i % j == 0:
return False
return True
for i in range(m, n+1):
if is_prime(i):
mn.append(i)
if not mn:
print(-1)
else:
print(sum(mn))
print(min(mn))
(2) 1~10000๊น์ง์ ์๋ฅผ ๋ฏธ๋ฆฌ ์์ ํ๋ณ ํ ์
๋ ฅ๋ฐ์ ํ์ธ
1. prime ๋ฆฌ์คํธ์์ ๋ฏธ๋ฆฌ 2, 3์ ๋ฃ์ด๋๋ค
2. 4~10000๊น์ง์ ์ซ์ i๋ฅผ ์์ ํ๋ณ
2-1. i๋ฅผ prime์์ ์ซ์๋ก ๋๋ ๋ชจ๋ 0์ด ์๋๋๋ง prime ๋ฆฌ์คํธ์ ๊ฐ์ ์ถ๊ฐํ๋ค
2. m๊ณผ n ์ฌ์ด์ ์์๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ mn
3. m๋ถํฐ n๊น์ง a๊ฐ prime ์์ ์กด์ฌํ ๋๋ง mn์ a ์ถ๊ฐ
4. mn์ ๊ธธ์ด๊ฐ 0์ด ์๋๋ฉด mn์ ํฉ๊ณผ ์ต์๊ฐ ์ถ๋ ฅ
5. mn์ ๊ธธ์ด๊ฐ 0์ด๋ฉด -1์ถ๋ ฅ
# 2581-2.py
m = int(input())
n = int(input())
mn = []
prime = [2, 3]
for i in range(4, 10001):
pp = [i % k for k in prime]
if all(pp):
prime.append(i)
for i in range(m, n+1):
if i in prime:
mn.append(i)
if len(mn) != 0:
print(sum(mn))
print(min(mn))
else:
print(-1)