๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ฒ์(1 โค n โค 123,456)๋ฅผ ์ฃผ์ํ์ (2n๊น์ง์ด๋ฏ๋ก 246,912๊น์ง..)
๊ฐ์ฅ ์ต์
์ O(N)์ ์๊ฐํด๋ณด์ (n=123,456์ด๊ณ 2n=246,912 ..)
๋ด ํฌ์คํ
: [Python] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 1929 - ์์ ๊ตฌํ๊ธฐ
์ ์ ์์๊ตฌํ๊ธฐ ๋ฌธ์ ๋ฅผ ํผ ์ ์ด ์๋๋ฐ, ์ด๋ฐ์์ผ๋ก ์ ๊ทผํ๋ฉด ์ด๋ฒ์๋ ์๊ฐ์ด๊ณผ๐คฆ๐ปโโ๏ธ
์ฐ์ 2n์ด ๊ธฐ์ค์ด๋ฏ๋ก 2~246,912๊น์ง ์์๋ฅผ ๋ชจ๋ list(num)์ ์ ์ฅํ์
๋ฌดํ๋ฃจํ๋ก n๊ฐ์ด 0์๋๋ฉด num์ ์ ๊ทผํ์ฌ n~2n๊น์ง ๊ฒ์ฌํ๋ฉด์,
์์๊ฐ ์กด์ฌํ๋ฉด res+1๋ฅผ ํ์ฌ res๋ฅผ ์ถ๋ ฅํ์
num = []
for i in range(2, 246913):
cnt = 0
for p in range(2, int(i**0.5)+1):
if i % p == 0:
cnt += 1
break
if cnt == 0:
num.append(i)
while True:
n = int(input())
res = 0
if n == 0:
break
for i in num:
if n < i <= 2*n: # if i > n and i <=2*n๊ณผ ๊ฐ์
res += 1
print(res)
num = [] #๋น๋ฆฌ์คํธ
for i in range(2, 246913):
cnt = 0
for p in range(2, int(i**0.5)+1):
if i % p == 0:
cnt += 1
break #cnt๊ฐ 0์ด ์๋๋ฉด ์์์๋
if cnt == 0: #cnt๊ฐ 0์ด๋ฉด ์์์ด๋ฏ๋ก num์ ์ ์ฅ
num.append(i)
while True:
n = int(input())
res = 0
if n == 0: #0์ด๋ฉด ์ข
๋ฃ
break
for i in num: #num์์ ํ๋์ฉ ๊ฒ์ฌ
if n < i <= 2*n: #i๊ฐ n๋ณด๋ค ํฌ๊ณ 2n๋ณด๋ค ์์ ๊ฐ์ผ๋๋ง๋ค res++
res += 1
print(res)
โป์ด๊ธฐ ์๊ณ ๋ฆฌ์ฆ
import sys
input = sys.stdin.readline
def gj(n):
for j in range(2,int((n**0.5))+1):
if n%j == 0:
return False
return True
cnt = 0
while True:
n = int(input().rstrip())
cnt = 0
if n == 0:
break
else:
for i in range(n+1,(2*n)+1):
if gj(i):
cnt += 1
print(cnt)
โป๊ตฌํ์์
1. ์์๊ตฌํ๋ gj()ํจ์ ๋ง๋ค์ด๋๊ธฐ
2. n์
๋ ฅ๊ฐ์๋ฐ๋ผ ํจ์๋ฅผ n~2n๊น์ง ํธ์ถํ์ฌ cnt++
๐๐ป n๊ฐ์ด ๋ค์ด์ฌ ๋๋ง๋ค n~2n๊น์ง ์์๋ฅผ ๊ณ์ํด์ ๊ณ์ฐํด์ผ ํ๋ฏ๋ก ์๊ฐ์ด๊ณผ๐คฆ๐ปโโ๏ธ
๐๐ป ๊ตฌํ ์ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ณผ์ ์์ ๊ณผ์ฐ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์ ํฉํ์ง ํ๋จํ๋ ์ฐ์ตํ์