筛选法求素数
python交互式代码自动补全

求1/n的值里的循环数的循环长度(循环的位数)

dcy posted @ 2009年6月12日 10:05 in Python with tags 算法 , 1580 阅读

如果d只有2和5两个约数,则没有1/d循环小数,如果d还有其他的约数,则1/d的循环小数的长度和d除去其所有2和5的约数的值d1的循环小数长度相同,比如6就和3的循环小数长度相同

 

  1. def cycle_length(n):
  2.     i = 1
  3.     if n % 2 == 0:
  4.         return cycle_length(n / 2)
  5.     if n % 5 == 0:
  6.         return cycle_length(n / 5)
  7.     if n == 1:
  8.         return 0
  9.     while True:
  10.         if (pow(10, i) - 1) % n == 0:
  11.             return i
  12.         else:
  13.             i = i + 1

 

不明白为什么除去全部2和5后能被9整除循环小数就是1位,被99整除就是2位……
知道原理的帮忙解答一下

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter