소수가 될 때까지 쪼개기
시간 제한1초메모리 제한256 MB
N에서 시작해 합성수를 무작위 약수 쌍으로 나누는 과정을 모든 수가 소수가 될 때까지 반복할 때 필요한 평균 분할 횟수를 구합니다.
문제
양의 정수로 이루어진 다중집합 에 대해 대량 분해 연산을 정의한다. 대량 분해는 의 모든 원소를 동시에 처리한다. 원소 가 소수면 그대로 둔다. 소수가 아니면 인 의 약수 를 하나 골라 를 와 두 수로 바꾼다. 조건을 만족하는 약수는 모두 같은 확률로 뽑히고, 원소마다 독립적으로 뽑는다.
예를 들어 를 보자. 2는 소수라 그대로 남는다. 10은 1과 10 사이의 약수가 2와 5뿐이라 항상 가 된다. 12는 약수 2, 3, 4, 6 중 하나를 각각 확률 로 고르므로 확률 씩으로 또는 가 된다. 그래서 첫 번째 대량 분해의 결과는 확률 로 , 확률 로 , 확률 로 이다. 마지막 결과에 두 번째 대량 분해를 하면 하나만 나온다.
원소가 하나뿐인 다중집합 에서 시작해 모든 원소가 소수가 될 때까지 대량 분해를 반복한다. 필요한 대량 분해 횟수의 기댓값을 구하여라.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. ()
이어지는 개의 줄에 각 테스트 케이스의 시작 값 이 한 줄에 하나씩 주어진다. ()
출력
각 테스트 케이스마다 대량 분해 횟수의 기댓값을 한 줄에 하나씩 출력한다. 값은 반올림해서 소수점 아래 여섯 자리까지 정확히 적는다. 답이 2이면 2.000000으로 출력한다.