鉴于刚才发的那了Fibonacci数列的题太无聊,可能用C写大数加法也不会太慢,所以再发一个吧,这个有点意思了。
分子为1的分数可以写成一个有限小数或者无限循环小数。比如分母从2到10的分数就写为:
1/2 = 0.5
1/3 = 0.(3)
1/4 = 0.25
1/5 = 0.2
1/6 = 0.1(6)
1/7 = 0.(142857)
1/8 = 0.125
1/9 = 0.(1)
1/10 = 0.1
这里, 0.1(6) 表示0.1666666......。可见其循环节为1个数字。而1/7则有6个数字的循环节。
那么,分母小于1000的所有分子为1的分数中,谁的循环节最长呢?
模拟除法,python代码
CODE:
#! usr/bin/env python
from mytictoc import tic, toc
# 返回1/n的循环节长度
def findCircleLen(n):
rem = 1
# 循环节前面的0,不影响结果
while rem