Algorithm/코딜리티

(코딜리티) Lesson 10. [Prime and composite numbers] : CountFactors - python

casim 2021. 1. 30. 21:06

문제 : app.codility.com/programmers/lessons/10-prime_and_composite_numbers/count_factors/

 

CountFactors coding task - Learn to Code - Codility

Count factors of given number n.

app.codility.com

문제 내용

양수인 숫자 N이 주어질 때, N의 약수 갯수를 구하시오.

제한 사항

  • N은 1~2,147,483,647

코드

def solution(N):
    
    count = 0
    i = 0
    while True:
        i +=1
        n = N%i
        m = N//i
		
        if i > m:
            return count

        if n == 0:
            if i == m:
                count += 1
                return count
            else :
                count += 2

해설

약수를 구하는 문제로, 만약 숫자를 24로 주어지면 24까지 반복문을 도는 것이 아니라, 대칭적으로 움직이기때문에, 반복문하나에 약수조건이 만족하면 count를 +2씩 합니다.

 

그리고 0부터 1개씩 늘리면서 나누다가, 나누는 값이 몫보다 큰 경우는 대칭적인 부분 까지 왔기에 반복문을 종료해줍니다.

 

그리고 9와 같은 경우는, 1, 3, 9로 총 3개이며, 3부분이 겹쳐서 이와 같은 경우는 count를 1개만 늘려준다음, 반복문을 종료해줍니다.