1000 이하의 자연수에서 그 역수가 순환소수가 될 때, 순환마디가 가장 긴 값을 찾는 문제이다. 분수를 소수로 표현하려면 실제로 나눗셈을 계산해야 한다. 매 자리에서 몫과 나머지가 나오는데, 나머지에 10을 곱하고 그 아랫자리를 더하면 다음 번 나누는 수(피제수)가 된다.
피제수가 같다면 몫과 나머지가 같을 것이므로, 같은 몫이 나올 때 까지의 구간의 길이를 구하면 된다.
function process(n)
d = 1
m = []
while true
q, r = divrem(d, n)
d in m && break
push!(m, d)
d == 0 && return 0
d = r * 10
end
return length(m)
end
function main()
3:2:1000 .|> (x -> (process(x), x)) |> maxinum |> last |> println
end
main()