약수 합의 역함수
시간 제한3초메모리 제한256 MB
주어진 N을 약수 합으로 갖는 모든 정수 M을 오름차순으로 출력하고, 없으면 none을 출력합니다.
문제
친구 Odd Even은 정수론에 빠져 있다. 새로운 연산을 배우면 그 연산을 온갖 수에 적용해 보면서 몇 시간이고 보낸다. 작년에는 오일러 피 함수 을 배웠다. 이 함수는 이하의 양의 정수 중 과 서로소인 것의 개수를 센다. 그러고는 1부터 백만까지 모든 정수의 을 손으로 계산했다.
최근에는 어떤 수 의 모든 약수의 합을 다음 식으로 구한다는 것을 배웠다.
여기서 은 의 소인수분해이고, 각 는 서로 다른 소수이며, 는 이 을 나누는 가장 큰 지수다.
Odd Even은 이 함수를 거꾸로 계산하고 싶어 한다. 양의 정수 이 주어지면 약수의 합이 인 양의 정수 을 모두 찾아 증가하는 순서로 적으려 한다. 손으로 하면 너무 오래 걸릴 것 같아서 대신 프로그램을 만들어 주기로 했다.
양의 정수 이 주어질 때 약수의 합이 인 정수 을 모두 증가하는 순서로 출력하고, 그런 수가 없으면 없다고 알리는 프로그램을 작성하라.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. 이어지는 개의 줄에는 각각 정수 이 하나씩 주어진다.
출력
각 테스트 케이스마다 약수의 합이 인 수를 모두 증가하는 순서로 한 줄에 출력한다. 수와 수 사이는 공백 하나로 구분한다. 그런 수가 하나도 없으면 따옴표 없이 none!을 출력한다.
출력이 매우 길어질 수 있으니 한 줄씩 바로 내보내지 말고 결과를 모았다가 한 번에 출력하는 편이 좋다.