숫자 N은 다음과 같다.
N이 주어질 때 a, b, c, d, e를 출력하라.
N은 2이상 10,000,000이하이다.
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에 N이 주어진다.
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
T = int(input()) # 값을 입력 받아 정수형으로 변환한 후 T에 저장(테스트 케이스)
for i in range(1, T+1): # 1부터 T까지 1씩 증가하는 반복문
N = int(input()) # 값을 입력 받아 정수형으로 변환한 후 N에 저장(소인수분해 할 수)
a = 0 # 2의 제곱 수를 0으로 초기화
b = 0 # 3의 제곱 수를 0으로 초기화
c = 0 # 5의 제곱 수를 0으로 초기화
d = 0 # 7의 제곱 수를 0으로 초기화
e = 0 # 11의 제곱 수를 0으로 초기화
if N < 2 or N > 10000000: # N이 2 미만이거나 10000000 초과인 경우
print('#{} -1'.format(i)) # 제약사항에서 벗어나기 때문에 오류 문구인 테스트 케이스 번호와 -1을 출력
continue # 계속 실행
else: # 제약사항에 해당할 경우
while True: # 무한 반복
if N % 2 == 0: # 만약 N을 2로 나눈 값의 나머지가 0이면
a += 1 # 2의 제곱 수인 a에 1을 더해주고
N = N / 2 # 입력 받은 값(소인수분해할 값)을 2로 나누어 다시 N에 저장
elif N % 3 == 0: # 만약 N을 3으로 나눈 값의 나머지가 0이면
b += 1 # 3의 제곱 수인 b에 1을 더해주고
N = N / 3 # 입력 받은 값(소인수분해할 값)을 3으로 나누어 다시 N에 저장
elif N % 5 == 0: # 만약 N을 5로 나눈 값의 나머지가 0이면
c += 1 # 5의 제곱 수인 c에 1을 더해주고
N = N / 5 # 입력 받은 값(소인수분해할 값)을 5로 나누어 다시 N에 저장
elif N % 7 == 0: # 만약 N을 7로 나눈 값의 나머지가 0이면
d += 1 # 7의 제곱 수인 d에 1을 더해주고
N = N / 7 # 입력 받은 값(소인수분해할 값)을 7로 나누어 다시 N에 저장
elif N % 11 == 0: # 만약 N을 11로 나눈 값의 나머지가 0이면
e += 1 # 11의 제곱 수인 e에 1을 더해주고
N = N / 11 # 입력 받은 값(소인수분해할 값)을 11로 나누어 다시 N에 저장
elif N == 1: # 만약 N이 1이면(위에 해당하는 모든 수로 나누어 졌을 때의 값이 1이 된다.)
break # 반복문 탈출
else: # 이 중 어떤 것에도 해당하지 않는다면
print('#{} -1'.format(i))
# 해당 테스트 케이스와 -1 오류 문구를 출력
break # 반복문 탈출
print('#{} {} {} {} {} {}'.format(i, a, b, c, d, e))
# 테스트 케이스와 각 제곱 수를 출력