본문 바로가기

수학

(파이썬) 소수 판별하기 소수판별하기 소수(Prime number)는 1과 자기자신만을 약수로 가지는 양의 정수를 말한다. 2, 3, 5, 7, 11, 13... 등의 수이다. 어떤 수가 소수인지 판단하는 방법에 대해 알아보자. 가장 간단하게 소수의 정의로부터, 어떤 자연수 N이 소수인지를 살펴보려면 N 이 1 이면 소수가 아니다. 2 부터 N-1 까지의 자연수들로 순서대로 N을 나눠서 나누어 떨어지는 수가 하나도 없으면 N은 소수이다. 라는 간단한 검사 규칙을 얻을 수 있다. 기본적으로 이 규칙을 그대로 적용하여 코드로 옮겨보면 생각보다 매우 간단한 함수가 만들어진다. def is_prime_bad(n: int) -> bool: if n < 2: return False for i in range(2, n): if n % i i.. 더보기
완전수와 초과수 (약수의 합 구하기) 완전수와 초과수 어떤 자연수 N의 자기 자신보다 작은 양의 약수들의 합이 자기 자신과 같다면 그 수를 완전수라하고, 만약 약수의 합이 N보다 크다면 초과수라고 한다. 6은 가장 작은 완전수로, 6의 약수는 1, 2, 3, 6이며, 이중 6 자신을 제외한 세 수의 합은 6으로 원래의 값과 일치한다. 12의 약수는 1, 2, 3, 4, 6, 12이고, 12를 제외한 약수의 합은 16으로 12는 초과수이다. 약수의 합을 구하는 방법은 크게 두 가지가 있다. 무식하게 1부터 N까지의 수로 N을 나눠서, 나눠지는 수가 약수이므로 이들을 모두 합산한다. N을 소인수분해하여, 각 인수의 누적 거듭제곱의 합들을 구하고, 다시 이들의 누적 곱을 구한다. (수학 시간에 약수의 합을 구하는 공식이라고 배웠다.) 컴퓨터를 이.. 더보기