글
1000보다 작은 정수 d중에서 1/d의 순환마디의 길이가 가장 긴 놈을 찾아라. 순환마디를 찾는 알고리즘이다.
답은 나오는 코드인데, 뭔가 이상하다. 이번에도 파이썬에서 발생한 float의 roundoff error때문에 around함수를 넣는 삽질을 했다.
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<j:
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)
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<j:
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함수를 넣는 삽질을 했다.
RECENT COMMENT