약수 함수
시간 제한8초메모리 제한512 MB
k가 10^15 이하일 때 1부터 k까지의 n 중 sigma(n)/n의 최댓값을 구해 소수점 여섯 자리로 출력한다.
문제
Teiji는 수론을 좋아한다. 그에게 모든 수는 친구다. 정수라면 말이다. 어느 날 조교로 다음 수업을 준비하던 그는 약수 함수라는 수론적 함수에 관심을 갖게 되었다. 약수 함수 σ(n)은 n의 모든 양의 약수의 합으로 정의된다. "이 σ(n)은 얼마나 빨리 커질까?" 하고 그는 스스로에게 물었다. n이 커질수록 σ(n)은 빠르게 커지지만 그 속도를 가늠하기는 어렵다. 그는 여러 k에 대해 1 ≤ n ≤ k에서 σ(n)/n의 최댓값을 계산하기로 마음먹었다.
작은 수에서는 쉽지만 약수 함수의 값을 손으로 여러 개 계산하기는 힘들다. 수천 자리를 쓰는 데 지친 그는 컴퓨터의 도움을 받아 문제를 풀기로 했다. 그런데 문제가 하나 있다. 그는 컴퓨터 프로그래밍에 익숙하지 않다. 그는 실력 있는 프로그래머인 당신에게 도움을 청했다.
그를 도와줄 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 주어지며, 정수 k (1 ≤ k ≤ 1015) 하나를 포함한다. 입력은 0 하나를 포함한 줄로 끝나며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 1 ≤ n ≤ k일 때 σ(n)/n의 최댓값을 한 줄에 출력한다. 각 값은 소수점 아래 여섯 자리까지 출력해야 하며, 절대 오차가 10-6을 넘어서는 안 된다.