코딩 연습

(파이썬) 소수판정 본문

Python

(파이썬) 소수판정

코딩아저씨 2016. 3. 15. 16:17
반응형

 

 

import math

def primecheck(n):
	if n == 2 or n == 3:
		return True
	if n % 2 == 0 or n == 1:
		return False
	for i in range(3, int(math.sqrt(n)) + 1, 2): 
		if n % i == 0:
			return False
	return True

if __name__ == "__main__":
	yn = "y"
	while yn == "y" or yn == "Y":
		n=input("소수인지 확인하고 싶은 수는? ")
		if primecheck(int(n)):
			print("%d는(은) 소수입니다." % int(n))
		else:
			print("%d는(은) 합성수입니다." % int(n))
		yn = input("계속 확인하시겠습니까?(y/n)")

일단 1 은 소수가 아니고 23은 소수임을 알려 준다.

2 를 제외한 모든 소수는 홀수 이므로 2 의 배수는 소수가 아님을 알려 준다.

2 의 배수가 아닌 수 n 에 대해서는 3 부터 [n]  까지의 수 중 홀수들로 n 을  나누어 보아 나누어 떨어지는 것이 있으면 n 은 소수가 아닌 것으로, 나누어 떨어지는 것이 없으면 n 은 소수로 판정한다. (단, [x]x 보다 크지 않은 최대 정수를 나타낸다.)

[n] 보다 큰 수 중 나누어 떨어지는 것이 있다는 것은 그 몫이 반드시 n 보다 작은 쪽에 있을 것이기 때문에, [n] 보다 큰 수에 대해서는 생각할 필요가 없다.

 

 

 

반응형

'Python' 카테고리의 다른 글

(파이썬) 최대공약수 구하기  (0) 2016.03.15
(파이썬) 완전제곱수 판별  (0) 2016.03.15
(파이썬) 소인수 분해  (0) 2016.03.15
(파이썬) 모든 조합의 경우 나열하기  (0) 2016.03.15
(파이썬) 소수 발생기  (0) 2016.03.15


Comments