python再计算无限循环小数的循环节
2017-05-01 23:02
2751 查看
循环节:
如果无限小数的小数点后,从某一位起向右进行到某一位止的一节数字循环出现,首尾衔接,称这种小数为循环小数,这一节数字称为循环节。
#寻找1000以内的n,使得1/n的循环小数节长度最长
前提是所有的数必须是质数(即素数)循环节的长度是使分母P整除10^k-1的最小k值。例如:9可以整除10^1-1,所以当分母为9时,循环节是1位。7可以整除10^6-1=999999,所以当分母为7时,循环节是6位。
第一次知道利用上面的算法来求循环节,真是长见识了。继续努力。
如果无限小数的小数点后,从某一位起向右进行到某一位止的一节数字循环出现,首尾衔接,称这种小数为循环小数,这一节数字称为循环节。
#寻找1000以内的n,使得1/n的循环小数节长度最长
#问题化简,首先不是素数的数的循环节长度必定可以由其他数组成比如14可以由2*7组成, #那么1/14与1/7有相同的循环节长度,所以只需找出所有的素数不(包括2与5),求的他们的循环节长度。 #判断一个1/n是否为循环小数。 def zhi(n): if n==2 or n==5: return True if n%2==0: return zhi(n//2) if n%5==0: return zhi(n//5) return False #判断一个数n是否为素数 def is_prime(n): if n == 1: return False for i in range(2, int(sqrt(n))+1): if n % i == 0: return
前提是所有的数必须是质数(即素数)循环节的长度是使分母P整除10^k-1的最小k值。例如:9可以整除10^1-1,所以当分母为9时,循环节是1位。7可以整除10^6-1=999999,所以当分母为7时,循环节是6位。
#判断1/n的小数循环节点长度 Length(n): L=1 while(True): if (10**L-1)%n==0: break L+=1 return L
a=[] for i in range(2,101): if is_prime(i) and i!=2 and i!=5:#素数包括2与5 a.append([Length(i),i]) print(a) ##[[1, 3], [6, 7], [2, 11], [6, 13], [16, 17], [18, 19], [22, 23], [28, 29], [15, 31], [3, 37], [5, 41], [21, 43], [46, 47], [13, 53], [58, 59], [60, 61], [33, 67], [35, 71], [8, 73], [13, 79], [41, 83], [44, 89], [96, 97]]
第一次知道利用上面的算法来求循环节,真是长见识了。继续努力。
相关文章推荐
- 无限循环小数的循环节
- 计算-小数相加-无限循环小数转为分数
- POJ 1930 Dead Fraction(gcd—枚举循环节,无限循环小数变最简分数)
- 循环小数 计算小数循环节和循环节长度 202 - Repeating Decimals
- 笔试题——输出循环小数的循环节
- 求除以3后结果为以3为循环节的纯循环小数的连续正整数的程序!
- 将无限循环小数转换成分数形式
- 无限循环小数的分数和校外的树~
- 无限循环小数转化为分数
- 【The beauty of math】无限循环小数转分数
- 编程实现表示循环小数,例如将1/3表示为0.3(3)就是将循环节放在括号中
- nyoj 329 循环小数【KMP】【求最小循环节长度+循环次数+循环体】
- 有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。
- hdu2522 模拟除法 和 无限循环小数的判断
- UVA 10555 - Dead Fraction(数论+无限循环小数)
- 无限循环小数的分数形式
- Project Euler 26 Reciprocal cycles(计算有理小数循环节长度)
- 无限循环小数
- java 求无限循环小数的循环体/循环部分 project euler problem26
- 【白书之路】UVa 202 Repeating Decimals 计算小数循环节