๋„์ ๋„์  ์ฝ”๋”ฉ์ผ๊ธฐ

<์ด์ฝ”ํ…Œ> ์ฝ”ํ…Œ์—์„œ ์ž์ฃผ ์ถœ์ œ๋˜๋Š” ๊ธฐํƒ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์š”๋Œœ๋‹ค 2022. 7. 27. 20:46

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์˜ ๋ฐฐ์ˆ˜๊นŒ์ง€ ๋ชจ๋‘ ์ง€์›Œ์ค€๋‹ค.

๊ทธ๊ฒƒ์ด ์†Œ์ˆ˜์ด๋‹ค.