ver.1
숫자 N의 약수들을 이용해서 가장 작은 자연수를 만들고 그 자리수를 출력
한 자리 소수인 2,3,5,7의 곱으로 나타내야 함
11 이상의 소수의 배수라면 -1을 출력해야함
N을 유지한 채로 N값을 사용하기 위해 temp 변수 사용
2,3,5,7로 나눠지면 temp을 2,3,5,7로 나누고 같은 과정 반복
while 문을 통해서 2,3,5,7로 나눠지지 않을 때 탈출하게 함
나눠진 수들을 리스트 x에 삽입한다.
ver.2
20 입력시 2,2,5가 나오는데
225보다는 45가 더 작은 수
한 자리 수 나오면 더 안 나누도록 하게 해야 함
temp % 10 == temp 일때 while문 탈출
ver.3
x에 1.0이 추가가 되는데 1.0이 추가가 안되도록 조건문을 설정함
2.0, 8.0 등 소수점이 추가가 됨
4,8의 배수도 있는데 2로 먼저 나눠져서 4,8이 추가가 잘 안됨
8,4로 나누고 안 나눠지는 것을 2로 나누게 한다.
동일한 문제가 6,9에서도 발생 가능
ver.4
자연수와 소수의 곱셈으로 나눠짐, -1 출력하는 부분 아직 구현하지 않음
검색해서 다른 분들 코드 참조
ver.5
9부터 2까지 순서대로 나눠보는 게 좋은 것 같다.
10이상의 소수로 나눠질 경우 -1을 출력
그 이외에는 리스트 x에 더해진 요소 숫자를 출력하게 함
denom = [i for i in range(9,1,-1)]
results = []
T = int(input())
for _ in range(T):
x = []
N = int(input())
temp = N
while (1):
cnt = 0
if temp == 1:
x.append(1)
break
for num in denom:
if temp % num == 0:
x.append(num)
temp /= num
break
cnt +=1
if cnt == 8:
if temp >=10:
break
if temp ==1:
break
if cnt ==8:
results.append(-1)
else:
results.append(len(x))
for idx in range(len(results)):
print(results[idx])