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개만 늘려준다음, 반복문을 종료해줍니다.