오일러계획 26번

1000보다 작은 정수 d중에서 1/d의 순환마디의 길이가 가장 긴 놈을 찾아라. 순환마디를 찾는 알고리즘이다.

import numpy as np

l, d = 0.,0.

def length(n):

i,j,k = 0.,0.,0.

if n%2 == 0 or n%5 == 0:

1.

else:

a = 1.0/n

while True:

a *= 10.

k=1.

b = 1.0/n

while k if (np.around(a-b,9)%1.)==0.:

return j-k

b *= 10.

k+=1.

j+=1.

for i in np.arange(2.,1000.,1.):

newlength = length(i)

if l <= newlength:
l,d = newlength, i

print(l,d)

답은 나오는 코드인데, 뭔가 이상하다. 이번에도 파이썬에서 발생한 float의 roundoff error때문에 around함수를 넣는 삽질을 했다.

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.