소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건은 다음과 같습니다.
- 기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다.
두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요.
from math import gcd
def solution(a, b):
b //= gcd(a,b)
while b%2==0:
b//=2
while b%5==0:
b//=5
return 1 if b==1 else 2
gcd
함수는 최대 공약수를 계산하는 함수입니다.b //= gcd(a, b)
: a
와 b
의 최대 공약수를 구하고, b
를 그 최대 공약수로 나눈다.while b % 2 == 0:
및 while b % 5 == 0:
: b
가 2 또는 5로 나누어 떨어지는 한, 계속해서 2 또는 5로 나눈다. 이렇게 함으로써 b
를 2와 5를 제외한 다른 소수로 나눌 수 없게 된다.return 1 if b == 1 else 2
: 최종적으로 b
가 1이 되었다면, 이는 2와 5를 제외한 다른 소수로 나눌 수 없는 경우를 나타낸다.