<์ด์ฝํ > ์ฝํ ์์ ์์ฃผ ์ถ์ ๋๋ ๊ธฐํ ์๊ณ ๋ฆฌ์ฆ
1. ์์
์์๋? 1๋ณด๋ค ํฐ ์์ฐ์ ์ค์์ 1๊ณผ ์๊ธฐ ์์ ์ ์ ์ธํ ์์ฐ์๋ก๋ ๋๋์ด๋จ์ด์ง์ง ์๋ ์์ฐ์์ด๋ค.
์์ ํ๋ณ ์๊ณ ๋ฆฌ์ฆ ์ฝ๋
def is_prime_num(x):
for i in range(2, x): ##2~x-1๊น์ง ํ์ธ
if x % i == 0 :
return False
return True
print(is_prime_num(12))
์ ์ฝ๋๋ฅผ ์ด์ฉํด 2~n์ฉ ๋๋ฉด์ ์ฝ๋๋ฅผ ํ์ธํ๋ค.
์ ์ฝ๋๋ฅผ ๊ฐ์ ์์ผ ์๊ฐ์ ๋ ์ค์ฌ๋ณด์.
16์ด ์์์ธ์ง ํ๋จํ๊ธฐ ์ํด์ ์ ์ฝ๋๋ก ๊ตฌํํ๋ฉด 15๋ถํฐ 2๊น์ง ๋ชจ๋ ๋๋ ์ผํ๋ค. ํ์ง๋ง, 2*8์ด๋ 8*2 ๊ฐ์ด ๊ฐ๋ค๋ ๊ฒ์ ์ฐ๋ฆฐ ์๊ณ ์์ง ์์๊ฐ.
๊ทธ๋์ ์ ๋ฐ๋ง ์์๋ฅผ ํ๋จํ์ฌ๋ ํ๋ณ์ด ๊ฐ๋ฅํ๋ค.
import math
def is_prime_num(x):
for i in range(2,int(math.sqrt(x))+1) :
if x % i == 0 :
print(x," ", i, x%i)
return False
return True
print(is_prime_num(12))
์ด๋ ๊ฒ ์ ๊ณฑ๊ทผ +1๋งํผ๋ง ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ฃผ๋ฉด ๋์ฑ ๋น ๋ฅด๊ฒ ๊ตฌํ ๊ฐ๋ฅํ๋ค.
๋ค์์ ์์ ํ๋ณ <์๋ผํ ์คํ ๋ค์ค์ ์ฒด ์๊ณ ๋ฆฌ์ฆ>
ํน์ ํ ์์ ๋ฒ์ ์์ ์กด์ฌํ๋ ๋ชจ๋ ์์๋ฅผ ์ฐพ์๋ณด์.
import math
n = 1000
#๋ชจ๋ ์๊ฐ ์์(True)๋ก ์ด๊ธฐํ(0๊ณผ 1์ ์ ์ธ)
array = [True for i in range(n+1)]
for i in range(2, int(math.sqrt(n))+1):
if array[i] == True: #๊ฑฐ์น์ง ์์ ์
j = 2
while i*j <= n:
array[i*j] = False #
j += 1
#์ถ๋ ฅ
for i in range(2, n+1):
if array[i] == True :
print(i, end = ' ')
์ฐ์ ์์๋ฅผ ํ๋ณํ๋ ๋ฆฌ์คํธ๋ฅผ n๋งํผ True๋ก ์ ์ธํด์ค๋ค. ์ฐ์ , ๋ค ์์๋ผ๊ณ ๋ช ์ํด์ฃผ๋ ๊ฒ์ด๋ค.
2๋ถํฐ ๋ฃจํธn๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋๋ฐ, j๋ฅผ 2๋ถํฐ 1์ฉ ์ฆ๊ฐํด๊ฐ๋ฉฐ i์ ๊ณฑํด์ฃผ๊ณ , ๊ทธ ๊ฐ์ ํด๋นํ๋ ๊ฐ์ false๋ก ๋ฐ๊ฟ์ค๋ค.
์ฆ, 2~1000๊น์ง์์ 2์ ๋ฐฐ์๋ฅผ ์ง์์ค๋ค์, 3์ ๋ฐฐ์ ~~~ ๋ฃจํธ n์ ๋ฐฐ์๊น์ง ๋ชจ๋ ์ง์์ค๋ค.
๊ทธ๊ฒ์ด ์์์ด๋ค.