[문제 파악] 정수의 약수를 구하는 방법은 0으로 떨어지지 않는 수를 제외한 모든 수를 구하는 것이다. 즉, 간단히 계산하면 10이란 숫자가 있을 때 10/1 = 10 10/2 = 5 10/3 = 3.333 10/4 = 2.5 10/5 = 2 10/6 = 1.666 10/7 = 1.42.... 10/8 = 1.25 10/9 = 1.11111... 10/10 = 1 이렇게 된다.
여기서 특이한 점을 발견할 수 있는데 1/10 = 10 2/10 = 5 5/10 = 2 10/10 = 1 특이한 점 : 바로 나누는 숫자와 나머지가 남지 않는 숫자와 갯수, 합이 똑같다는 것이다. 즉, 만약에 1억이라는 숫자가 있다면 for문을 1부터 1억까지 돌려서 찾는 방법을 써도 되지만 비효율적이다.
그렇다면 그 비효율을 없앨 첫 번째 방법이 바로 저 특이한 점을 이용하는 것이다. 그렇다면 그걸 어떻게 할 수 있을까?
나는 먼저 100을 1부터 100까지 나눠봤다. 여기서 모듈러스 연산자를 통해 0으로 ...
원문 링크 : 약수의 합