약수의 역수의 합에 관한 증명과 해석
탐구 보고서
약수의 역수의 합과 소수와의 관계성
작성자 이름:이강현
2023년 8월 9일
서론
저는 어느 날, 완전수의 약수에 관하여 탐구 중에 완전수의 약수의 역수의 합이 2가 된다는 것을
발견하였습니다. 이를 토대로 저는 모든 완전수에서 이것이 성립하는지, 그리고 완전수가 아닌
불완전수에서는 어떤 규칙이 성립하는지가 궁금했습니다. 또한 약수의 역수의 합을 그래프로
그린다면 어떤 형식을 띌지도 궁금해졌습니다.
가설
완전수의 약수의 역수의 합은 2일 것이며, 부족수와 과잉수는 각각 성질에 따라 2미만, 2초과일
것이다. 그리고 이를 그래프로 그렸을 때, 약수의 특징에 따라 필연적으로 불규칙한 형태를
띌것이다.
재료
1. Pycharm (Python 개발 도구)
2. Google Spreadsheet (도표 작성 도구)
절차
1. 완전수에서의 약수의 역수의 합 계산 및 증명
2. 불완전수에서의 약수의 역수의 합 계산 및 증명
3. Pycharm을 이용한 약수의 역수의 합을 구하는 프로그램 작성
4. 도출된 자료를 Excel로 그래프로 변환, 결과 도출
1
1. 완전수에서의 약수의 역수의 합
완전수의 정의는 자기 자신을 제외한 모든 약수의 합이 자기 자신과 같은 자연수를 말한다. 예를
들자면, 6, 28, 496, 8128, 33550336 등 무한히 많이 존재한다. 그렇다면 이제 이런 완전수에서의
약수의 역수의 합을 하나만 구해보자. 가장 간단한 6으로 해보겠다. 6은 약수가 1,2,3,6이
존재하기에, (1)에서처럼 계산되는것을 알수 있으며, 값은 2가 된다는 것을 알 수 있다.
(1)
이런 계산은 다른 완전수에서도 성립하는데, 이를 이제 일반화 해보자.
어떤 완전수 가 있다고 하자. 이때 의 약수를 (단, )이라고 하자. 즉, 완전수의
약수의 개수를 개라고 한것이며, , 이게 된것이다. 이제 두개의 식을 작성할 수
있는데, 먼저 앞에서 말한 완전수의 정의를 이용하여 (2)의 식을 세울 수 있고, (2) 식을 사용하면
(3)도 도출해낼 수 있다.
(2)
(3)
그리고, 약수의 특성에 따라 (4)의 식도 도출되는데, (4)식의 예시를 들어보자면 25의 약수인 1, 5,
25에서 가 되는 것으로 확인할수 있다.
(4)
그럼 이제 증명을 해보자.
2
완전수의 약수의 합은 다음과 같이 표현된다.
(4) 식을 이용하면 위의 식은
와 같이 표현된다.
여기서 이므로,
이고, 여기서 (3)식에 따라
가 되어 모든 완전수의 약수의 역수의 합은 2가 된다.
3
2. 불완전수에서의 약수의 역수의 합
완전수에서 약수의 역수의 합이 2였다면 불완전수(과잉수, 부족수)에서는 어떤 식으로 나타날까?
사실 이는 간단히 증명할 수 있다. 먼저, 부족수는 자기자신을 제외한 약수의 합이 자기자신 보다
작은 수로, (5)-1에서 처럼 되고, 과잉수는 그 반대로 자기자신을 제외한 약수의 합이 자기자신 보다
큰 수 이기에 (5)-2 처럼 된다.
(5)-1
(5)-2
따라서, 부족수는 약수의 역수의 합이 2미만이고, 과잉수는 약수의 역수의 합이 2초과이다.
4
3. Pycharm을 이용한 약수의 역수의 합
이제 약수의 역수의 합의 범위와 규칙을 찾기 위하여 그래프를 그릴 것이다. 하지만 그래프를
그리기 위해서는 자료가 필요하기 때문에 Pycharm을 이용하여 의 범위 내에 있는
모든 n의 각각의 약수의 역수의 합을 계산하는 프로그램을 만들 것이다. (N은 직접 입력)
프로그램은 다음과 같다.
# n의 진약수를 리스트에 담아 리턴한다.
def get_divisor(n):
d = []
for i in range(1, n+1, 1):
if n % i == 0:
d.append(i)
return d
# 완전수, 부족수, 과잉수를 판단함.
def determine(d):
# d = get_divisor(n)
# 완전수 = 모든 약수를 더했을 때, 그 수의 2배가 되는 경우 = 모든 진약수를
더했을 때, 그 수가 되는 경우
sum = 0
for i in d:
sum += i
# print(f"sum={sum}, d[-1]={d[-1]}")
if sum == d[-1]*2:
return "완전수"
elif sum < d[-1]*2:
return "부족수"
else:
return "과잉수"
# max 까지의 수 중에서 완전수, 과잉수, 부족수의 개수를 계산함
def count(max):
perfect = 0
deficient = 0
abundant = 0
for i in range(1, max+1, 1):
5
det = determine(i)
if det == "완전수":
perfect += 1
elif det == "부족수":
deficient += 1
else:
abundant += 1
print(f"전체={i}, 완전수={perfect}({perfect*100/i}%),
부족수={deficient}({deficient*100/i}%),
과잉수={abundant}({abundant*100/i}%)")
# 주어진 수 n의 약수의 역수의 합을 구한다. CSV 형식으로 출력
def sum_of_inv(n):
d = get_divisor(n)
det = determine(d)
sum = 0
for i in d:
sum += 1.0/float(i)
print(f"{n}, {det}, {sum}")
if __name__ == '__main__':
# print(get_divisor(16))
# print(determine(get_divisor(6)))
# count(100000)
# 10만까지 약수의 역수합을 구함(N=100000)
for i in range(1, 100000+1):
sum_of_inv(i)
이렇게 10만 까지의 모든 자연수의 부족수, 완전수, 과잉수 여부와 각각의 약수의 역수의 합을
구하였다.
6
4. 그래프적 해석
이제 프로그램에서 얻은 (a,b,c)꼴의 자료를 전부다 Excel로 보냈다. 그렇게 표를 만들고 표를 점
그래프로 바꾸었다. 그랬을 때의 결과가 아래와 같다.
과잉수의 약수의 역수의 합은 10만까지는 4미만의 값이었고, 부족수의 약수의 역수의 합은
1이상 2미만의 값을 보여주었다.
여기서 든 의문은 과연 과잉수의 역수의 합은 모두 4미만일까?였다.
7
5. 과잉수의 역수의 합은 수렴하나?
10만까지의 과잉수의 역수의 합은 4 미만임을 프로그램으로 확인했다. 그렇다면 모든 과잉수에
대해서도 4미만일까? 그렇다는 가정을 하고, 이에 대한 반례를 찾으면 4 이상으로 발산하는
것이다.
반례로서 팩토리얼 수를 생각해 보았다.
N! = 1*2*3* … (N-1)*N
일때 이 수의 약수의 역수의 합은 보다 클
것이다. (두
약수의
곱,
세1 +
1
2
+
1
3
... +
1
𝑁
약수의 곱도 있으므로)
이것이 발산하는지는 아래와 같이 "비교판정법"으로 증명이 된다. 따라서 과잉수가 되는 N! 의
약수의 역수의 합은 무한히 발산한다.
8
실제로 Python 프로그램으로 돌려서 확인해 보았다.
8! 의 약수의 역수의 합 = 3.946428571428571
9! 의 약수의 역수의 합 = 4.081349206349208 (4를 초과함!!)
10! 의 약수의 역수의 합 = 4.225663580246912
11! 의 약수의 역수의 합 = 4.6098148148148095
12! 의 약수의 역수의 합 = 4.629298540965204 (오래 걸림)
13! 의 약수의 역수의 합 = (너무 오래 걸림!!!)
10만까지의 약수의 역수의 합이 컴퓨터 계산결과 4보다 작다고 해서, 모든 수에 대해 만족하지
않다는 것을 수학적으로 증명했고, 이를 바탕으로 다시 범위를 넓혀 계산하니 실제로 발산함을
알아냈다.
10만까지의 수에서 팩토리얼 수는 8! = 40320 이 최대였으며, 이것을 기준으로 4를 넘지 않는다고
가정하는 건 섣부른 판단이다.
9
댓글
댓글 쓰기