약수를 구하는 알고리즘에서
조회수 518회
def count_factors(num):
loop=num**0.5
# for square number
if loop==int(loop):
count=1
else:
count=0
i=1
while i<loop:
if num%i==0:
count+=2
i+=1
return count
약수를 구하는 함수에서 왜 count를 +2를 하나요? 루트를 씌워서 +2를 하는 거 같은데 잘 이해가 안 됩니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
주어진 수에 대해 약수의 개수를 구하는 함수입니다.
if loop == int(loop): count = 1 else: count = 0
이 부분은 num의 제곱근이 정수인 경우 즉, num이 제곱수인 경우에는 count를 1부터 시작하고, 아닌 경우에는 count를 0부터 시작하도록 했네요. num이 제곱수일 경우 제곱근을 약수로 가지니까 그걸 세주는 부분입니다.
i = 1 while i < loop: if num % i == 0: count += 2 i += 1
이 부분에서는 1에서부터 주어진 수의 제곱근보다 작은 수에서 약수가 몇 개 있는지를 세서 그 수의 두 배만큼 count에 더해주는 부분입니다. 약수가 하나 있으면 짝이 되는 약수가 하나 더 있을테니 count에 2씩 더해 주는 것입니다.
예를들면, num에 10이 들어왔을 경우 제곱근인 3.16... 보다 작은 범위에서 약수는 1과 2가 있을 것이고, 제곱근보다 큰 범위에 그 짝인 10과 5가 있을 수 있겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력