๐[Math] ์์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์โฆ
์์ ๊ตฌํ๋ ๋ฐฉ๋ฒ
์์
๋ 1๊ณผ ์๊ธฐ์์ ๋ง์ ์ฝ์๋ก ๊ฐ๋ 2์ด์์ ์์ฐ์๋ฅผ ๋งํ๋ค.
2, 3, 5, 7, 11, 13 ...
์ฝ๋ฉํ ์คํธ ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋, ์์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด ๋ค์ํ๊ธธ๋ ์ ๋ฆฌํด๋ณธ๋ค.
๊ทธ๋ฅ ๋๋ !
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ทธ๋ฅ ๊ณ์ํด์ ๋๋์ด๋ณด๋ ๋ฐฉ์์ด๋ค.
์ฃผ๋จน๊ตฌ๊ตฌ์ ๋ฐฉ๋ฒ์ด๊ธด ํ๋ฐ, ๋๋ฆ ๊ด์ฐฎ์๋ค.
๋จผ์ ์๋ค์ด ๊ฐ๋ ์ฝ์์ ํน์ง์ ๋ณด๋ฉด, ํญ์ ๋์นญ ๊ตฌ์กฐ
๋ฅผ ์ด๋ฃฌ๋ค๋ ์ ์ด๋ค.
8 : 1, 2, 4, 8
25 : 1, 5, 25
62 : 1, 2, 31, 62
...
์ด ์ฒ๋ผ ์ฝ์๋ ๋์นญ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ , ๋์นญ์ ์ด๋ฃจ๋ ๊ทธ ๊ธฐ์ค์ ์ ๊ณฑ๊ทผ
์ด๋ค.
์ฃผ์ด์ง ์์ ์ ๊ณฑ๊ทผ์ ๊ธฐ์ค์ผ๋ก ์ดํด๋ณด์.
n = p * q
๋ก ์๊ฐํ์ ๋, p์ q์ค ํ ์๋ ํญ์ \(\sqrt{n}\) ์ดํ, ํ ์๋ ํญ์ \(\sqrt{n}\) ์ด์์ด๋ค.
์ด๊ฑธ ์ ์ฉํด์ ์ฝ๋๋ก ์์ฑํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
def is_prime(n):
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
๋ฐ๋ณตํ๋ ์ผ์ด ๋ง์ ๊ฒฝ์ฐ์๋ int(math.sqrt(n))
์ for๋ฌธ์ ์กฐ๊ฑด์์ ๋ฃ๊ฒ๋๋ฉด ๊ณ์ํด์ ์ ๊ณฑ๊ทผ์ ๊ตฌํ๋ ๋์์ด ํ์ํ๋ฏ๋ก,
m = int(math.sqrt(n))
์ฒ๋ผ ๋ณ์๋ก ๋นผ์ ์ฌ์ฉํ๋ฉด ์ข๋ค๊ณ ํ๋ค.
์๋ผํ ์คํ ๋ค์ค์ ์ฒด
ํ๋ก๊ทธ๋๋ฐ ๋ํ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐฉ์์ด๋ผ๊ณ ํ๋ค.
์๋ผํ ์คํ
๋ค์ค์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฉ์์ ๋๋ฌด์ํค์์ ํ์ธํ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ตฌํ๊ณ ์ ํ๋ ์์๋ฅผ 2๋ถํฐ ๋์ดํ๋ค.
- 2๋ ์์์ด๋ฏ๋ก ๋นผ๋๊ณ , 2๋ฅผ ์ ์ธํ 2์ ๋ฐฐ์๋ฅผ ๋ชจ๋ ์ง์ด๋ค.
- 3์ ์์์ด๋ฏ๋ก ๋นผ๋๊ณ , 3์ ์ ์ธํ 3์ ๋ฐฐ์๋ฅผ ๋ชจ๋ ์ง์ด๋ค.
- 4๋
2๋ฒ
๊ณผ์ ์์ ์ด๋ฏธ ์ง์์ก์ผ๋ฏ๋ก ๊ฑด๋๋ด๋ค. - 5๋ ์์์ด๋ฏ๋ก ๋นผ๋๊ณ , 5๋ฅผ ์ ์ธํ 5์ ๋ฐฐ์๋ฅผ ๋ชจ๋ ์ง์ด๋ค.
- 7์ ์์์ด๋ฏ๋ก ๋นผ๋๊ณ , 7์ ์ ์ธํ 7์ ๋ฐฐ์๋ฅผ ๋ชจ๋ ์ง์ด๋ค.
- ์ ๊ณผ์ ์ ๊ตฌ๊ฐ ๋ด์์ ๊ณ์ํด์ ๋ฐ๋ณตํ๋ฉด, ๊ตฌ๊ฐ ๋ด์ ๋ชจ๋ ์์๊ฐ ๋จ๋๋ค.
์ด ๊ณผ์ ์ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
def eratos(n):
# ์ฒ์ ๋ชจ๋ ์๋ฅผ ์์๋ผ๊ณ ๊ฐ์ ํ๋ค. ์ด์ฐจํผ ์ง์๊ฐ๊ฑฐ๋๊น.
arr = [1 for i in range(n + 1)]
if n <= 1:
return False
else:
for i in range(2, n):
if arr[i]:
for j in range(i + i, n, i): # i์ ๋ฐฐ์๋ฅผ ์ง์ฐ๊ธฐ ์ํด i๋งํผ ์ฆ๊ฐ(i + i ๋์ i * 2๋ ๊ฐ๋ฅ)
arr[j] = False
return [i for i in range(2, n) if arr[i]]
์ฌ๊ธฐ์ for j in range(i + i, n, i)
๊ฐ ๊ฐ์ฅ ์ดํด๊ฐ ์๋๋ ๋ถ๋ถ์ด์๋ค.
๊ทธ๋์ ์ง์ ์ฝ๋๋ก ์์ฑํ๊ณ , ์ฌ๋ฌ ์ผ์ด์ค๋ค์ ๋ฐ๊ฟ๊ฐ๋ฉด์ ํ์ธํ๋ค.
์๊ฐ์ด ์ค๊ฐ์ ๊ผฌ์์๋๊ฑฐ์๋ค.
์๋ฅผ ๋ค๋ฉด, 3์ ์์๋๊น 3์ ์ ์ธํ
3์ ๋ฐฐ์๋ฅผ ์ง์์ผํ๋๊ฑฐ๋๊น, 3์ ๋ฐฐ์ ์ค ๊ฐ์ฅ ์์ ์์ธ 3 * 2 == 3 + 3
๋ถํฐ ์์ํ๋๊ฒ ๋ง์๋ค.
์ฆ๊ฐํญ์ ๋ฐฐ์๋ฅผ ์ฐพ์์ผํ๋ ๋น์ฐํ i๋งํผ ์ฆ๊ฐํ๋๊ฒ ๋ง๋ค.
์ฐธ๊ณ ์๋ฃ
[https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98%EC%B2%B4](https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98%EC%B2%B4)
๋๊ธ๋จ๊ธฐ๊ธฐ