数论证明(任何一个素数倒数的循环小数位数一定小于素数本身)
2012-07-23 20:46
465 查看
任何一个素数倒数的循环小数位数一定小于素数本身
一般素数倒数的小数都比较复杂,因为素数的倒数也是一个分数,所以一定是一个循环小数(除了2和5以外) ,但是素数的循环小数位数最大有多少呢,有没有可能非常大,无限长呢,这是本文要解决的问题?
素数倒数的循环小数位数说明:
1/3=0.33...,循环小数=3,循环小数位数=1
1/7=0.142857142857... ,循环小数=142857,循环小数位数=6
1/11=0.0909...,循环小数=09,循环小数位数=2
1/13=0.076923076923...,循环小数=076923,循环小数位数=6
1/17=0.05882352941176470588235294117647...,循环小数=0588235294117647,循环小数位数=16
1/19=0.052631578947368421052631578947368421...,循环小数=052631578947368421,循环小数位数=18
1/23=0.04347826086956521739130434782608695652173913...,循环小数=0434782608695652173913,循环小数位数=22
1/23=0.03448275862068965517241379310344827586206896551724137931...,循环小数=0344827586206896551724137931,循环小数位数=28
1/31=0.032258064516129032258064516129...,循环小数=032258064516129,循环小数位数=15
1/37=0.027027...,循环小数=027,循环小数位数=3
1/41=0.0243902439...,循环小数=02439,循环小数位数=5
...
1/97=0.010309278350515463917525773195876288659793814432989690721649484536082474226804123711340206185567...,循环小数位数=96
从以上列表可以看出,素数倒数的循环小数位一般都比较多,但是没有看到过位数大于素数本身的情况,用程序做测试,发现1000以内的数也是如此,因此想是否可以证明一下这个结论。
以下是证明思路:
假设p是一个素数,1/p的循环小数位为x,1/p则可以表示为x/999...9 ,分母总共有x个9,
例如:
1/3=0.33...,循环小数=3,循环小数位数=1,则1/3=3/9
1/7=0.142857142857... ,循环小数=142857,循环小数位数=6,则1/7=142857/999999
1/37=0.027027...,循环小数=027,循环小数位数=3,则1/37=027/999
证明过程:
假设1/p=0.x1x2..xn......,x1x2..xn是循环小数,总共有n位,我们做一些变换:
10^n*(1/p)
=10^n*(0.x1x2..xn......)=x1x2..xn+0.x1x2..xn......
=>10^n*(0.x1x2..xn......)-0.x1x2..xn......=x1x2..xn
=>(10^n-1)*(0.x1x2..xn......)=x1x2..xn
=>0.x1x2..xn......=x1x2..xn/(10^n-1)
=>0.x1x2..xn......=x1x2..xn/999...9(总共有n-1个9)
假设K=999...9,总有p-1个9,通过上述说明,我们只要能找到一个整数x,x小于K并且1/p=x/K,则我们的命题得证。
要证明这个结论需要引用费马小定理,
参见:
百度百科:http://baike.baidu.com/view/263807.htm
费马小定理是数论中的一个重要定理,其一段内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p)
假设p是一个素数,这里我们取a=10,(10,p)=1
则有结论
10^(p-1) ≡1(mod p)
10^(p-1)-1≡0(mod p)
10^(p-1)-1=999...9,总共有p-1个9,这里缩写为K
K≡0(mod p),因此存在一个整数x,使得
x*p=K
=>1/p=x/K
因为1/p小于1,所以x肯定也小于K,由于K由p-1个9构成,所以x的位数也小于p.
到此命题得证。
一般素数倒数的小数都比较复杂,因为素数的倒数也是一个分数,所以一定是一个循环小数(除了2和5以外) ,但是素数的循环小数位数最大有多少呢,有没有可能非常大,无限长呢,这是本文要解决的问题?
素数倒数的循环小数位数说明:
1/3=0.33...,循环小数=3,循环小数位数=1
1/7=0.142857142857... ,循环小数=142857,循环小数位数=6
1/11=0.0909...,循环小数=09,循环小数位数=2
1/13=0.076923076923...,循环小数=076923,循环小数位数=6
1/17=0.05882352941176470588235294117647...,循环小数=0588235294117647,循环小数位数=16
1/19=0.052631578947368421052631578947368421...,循环小数=052631578947368421,循环小数位数=18
1/23=0.04347826086956521739130434782608695652173913...,循环小数=0434782608695652173913,循环小数位数=22
1/23=0.03448275862068965517241379310344827586206896551724137931...,循环小数=0344827586206896551724137931,循环小数位数=28
1/31=0.032258064516129032258064516129...,循环小数=032258064516129,循环小数位数=15
1/37=0.027027...,循环小数=027,循环小数位数=3
1/41=0.0243902439...,循环小数=02439,循环小数位数=5
...
1/97=0.010309278350515463917525773195876288659793814432989690721649484536082474226804123711340206185567...,循环小数位数=96
从以上列表可以看出,素数倒数的循环小数位一般都比较多,但是没有看到过位数大于素数本身的情况,用程序做测试,发现1000以内的数也是如此,因此想是否可以证明一下这个结论。
以下是证明思路:
假设p是一个素数,1/p的循环小数位为x,1/p则可以表示为x/999...9 ,分母总共有x个9,
例如:
1/3=0.33...,循环小数=3,循环小数位数=1,则1/3=3/9
1/7=0.142857142857... ,循环小数=142857,循环小数位数=6,则1/7=142857/999999
1/37=0.027027...,循环小数=027,循环小数位数=3,则1/37=027/999
证明过程:
假设1/p=0.x1x2..xn......,x1x2..xn是循环小数,总共有n位,我们做一些变换:
10^n*(1/p)
=10^n*(0.x1x2..xn......)=x1x2..xn+0.x1x2..xn......
=>10^n*(0.x1x2..xn......)-0.x1x2..xn......=x1x2..xn
=>(10^n-1)*(0.x1x2..xn......)=x1x2..xn
=>0.x1x2..xn......=x1x2..xn/(10^n-1)
=>0.x1x2..xn......=x1x2..xn/999...9(总共有n-1个9)
假设K=999...9,总有p-1个9,通过上述说明,我们只要能找到一个整数x,x小于K并且1/p=x/K,则我们的命题得证。
要证明这个结论需要引用费马小定理,
参见:
百度百科:http://baike.baidu.com/view/263807.htm
费马小定理是数论中的一个重要定理,其一段内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p)
假设p是一个素数,这里我们取a=10,(10,p)=1
则有结论
10^(p-1) ≡1(mod p)
10^(p-1)-1≡0(mod p)
10^(p-1)-1=999...9,总共有p-1个9,这里缩写为K
K≡0(mod p),因此存在一个整数x,使得
x*p=K
=>1/p=x/K
因为1/p小于1,所以x肯定也小于K,由于K由p-1个9构成,所以x的位数也小于p.
到此命题得证。
相关文章推荐
- 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。 例如: 输入: 1,5 则输出: 0.2 输入
- 有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。
- 整数输入有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。
- 一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。
- 一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它
- 一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。
- 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
- 打印出所有的 "水仙花数",所谓 "水仙花数 " 是指一个三位数, 其各位数字立方和等于该数本身。例如: 153是一个 "水仙花数 ", 因为153=1的三次方+5的三次方+3的三次方。
- 任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差.
- C#源代码—编写一个程序求出所有的“水仙花数”。“水仙花数”是指一个3位数,其各位数字的立方和恰好等于该数本身。例如153=1*1*1+5*5*5+3*3*3,所以153是“水仙花数”。
- 3.输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)提示:系统自带的移位都是非循环的
- 获取一个整数 然后显示所有小于或等于该数的素数
- 输出一个数的各个位数、求某个数之内素数
- 编程题--任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差
- java编程基础篇 --> 从键盘输入一个整数(1 个 3 位整数),判断其是不是水仙花数。所谓“水仙花数”是 指一个 3 位数,其各位数字立方和等于该数本身。
- Java:求整数位数:任意输入一个整数(小于10位),求它的位数
- 输出1/n的小数位,是循环小数输出一个循环节
- 今天学习时突然联想到这样一个有趣但无用的问题:利用C语言(不能是其他语言)求两个整数的较大/小值-----要求不用if、三目?、switch、循环、数组、加减乘除求余、位运算符以及任何库函数
- (c++)打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。
- 20171207编写一个程序,只接受正整数的输入,然后显示所有小于或等于该数的素数。