본문 바로가기

카테고리 없음

(파이썬/Python) 소수 구하기 (양 숫자 사이)

#!/bin/python3
# get_primes_between.py
# Usage: python3 get_primes_between.py 2 100
#  2에서 100 사이의 소수 구하기

import sys

def isPrime(num):
  if num <= 1: return False
  if num == 2 or num == 3: return True
  if num % 2 == 0: return False   # 짝수라면 합성수
  root_val = round(num ** 0.5) + 1 # 제곱근 값을 구한다

  # 이미 2를 제외했으므로 3부터 2씩 증가시키며 홀수로만 나눈다.
  for i in range(3, root_val, 2): # num이 5인 경우부터 시작한다
    if num % i == 0:  # 중간에 나눠지면 소수가 아니다
      return False
  return True

if (len(sys.argv) != 3):
    print("Usage: " + sys.argv[0] + "  start_number end_number")
    exit()

start_num = int(sys.argv[1])
end_num = int(sys.argv[2])

#if (isinstance(start_num, int) == False or isinstance(end_num, int) == False):
#    print("Usage: " + sys.argv[0] + "  start_number end_number")
#    exit()

if start_num % 2 == 0:
  start_num += 1;

for i in range(start_num, end_num, 2):
  if isPrime(i) == True:
    print(i)