求1/n的值里的循环数的循环长度(循环的位数)
如果d只有2和5两个约数,则没有1/d循环小数,如果d还有其他的约数,则1/d的循环小数的长度和d除去其所有2和5的约数的值d1的循环小数长度相同,比如6就和3的循环小数长度相同
-
def cycle_length(n):
-
i = 1
-
if n % 2 == 0:
-
return cycle_length(n / 2)
-
if n % 5 == 0:
-
return cycle_length(n / 5)
-
if n == 1:
-
return 0
-
while True:
-
if (pow(10, i) - 1) % n == 0:
-
return i
-
else:
-
i = i + 1
不明白为什么除去全部2和5后能被9整除循环小数就是1位,被99整除就是2位…… 知道原理的帮忙解答一下