网站首页 > 技术文章 正文
1 余数的表达式
任意一个整数被 7 除以后的结果(商),可以除尽时只有整数,余数为 0。不能除尽则存在余数(范围1~6)。
先看一下余数用7除以后的数据:
1/7 = 0.142857
2/7 = 0.285714
3/7 = 0.428571
4/7 = 0.571428
5/7 = 0.714285
6/7 = 0.857142
其实,上述结果只是近似值。余数用小数点表示, 应该是 0.142857 的周期性的无限循环的。设:
a = 0.142857(余数1产生的一段小数)
q = 10^(-6)(循环周期)
k = 1,2,3,4……,直至无穷大, 表示a的周期性循环次数。
s 是任意一个整数被 7 除后的余数用小数点表示的精确值,则
s = a*(1+q +q^2+q^3+……+q^k)①
s*q = a*{q +q^2+q^3+……+q^(k+1)}②
①-②,
s*(1-q)= a*{1-q^(k+1)}
所以
…………………………………
s = a*{1-q^(k+1)}/(1-q)
…………………………………
这就是任意一个整数被 7 除后,余数为 1 产生的小数部分,近似值向精确值逼近表示的表达式。显然 k 越大越精确,根据计算精确度需要选定。
例如:
某个整数被7除以后余数是1,代入公式,它的余数被7除用小数点表示k次循环近似值:
k = 0
s = a*{1-q^(0+1)}/(1-q)
= a*{1-q^(1)}/(1-q)
= a
= 0.142857
k = 1
s = a*{1-q^(k+1)}/(1-q)
= a*{1-q^(1+1)}/(1-q)
= a*{1-q^2}/(1-q)
= a*{1+q}
= 0.142857*{1+10^(-6)}
= 0.142857142857
k = 2
s = a*{1-q^(k+1)}/(1-q)
= a*{1-q^(2+1)}/(1-q)
= a*{1-q^3}/(1-q)
= a*{1+q+q^2}
=0.142857*{1+10^(-6)+10^(-12)}
= 0.142857142857142857
……
还可以得到:
…………………………………
s =n* a*{1-q^(k+1)}/(1-q)
n = 1,2,3……6(任意整数被 7除以后产生的余数)
…………………………………
这就是任意一个整数被 7 除后,余数为 n产生的小数部分,近似值向精确值逼近表示的表达式。
2 某整数(仅1个有效数)含7个数与余数
某个整数含7的个数,即某个整数用7除以后产生的商整数部分。
从仅有1个数,右边都是0的某整数开始。
10有1个
100有14个
1000有142个
1万有1428个
10万有14285个
100万有142857个
1000万有1428571个
1个亿有14285714个
这种整数含7的个数:
1)其位数与这种整数含0的个数相同。
2)含7的个数总出现142857(独缺369)周期性无限循环。达到位数就截断。
3)怎么算出余数:
只需要看含7的个数最末位(最右边数字)与7相乘的结果的末位数,它的互补数就是余数(范围1~6)。
例如1000含7的个数142。142末位数2,则1000内被7除尽最大值末位数2*7=14,取14末位数4,则余数是6,详见图1。
实际上,某个整数位数相同的可能数字有1~9,它们含7的个数与余数,本文以10000~90000为例,详见图2。
有什么规律?
1)其位数与这种整数含0的个数相同。
2)含7的个数的起始位的数字从1~6依次序为1,2(缺3)4,5(缺6)7,8。(图2在数字的下方用→标识),然后从某位开始142857的逆时针循环,达到位数就截断。
3)70000含7的个数是10000,这样80000可看作10000,90000看作20000。但要记得在7的个数最左边加1。即:
10000有1428个7
80000有11428个7
90000有12857个7
3 某整数(不只1个有效数)含7个数与余数
可拆分成若干仅1个有效位的。最末3位,不拆分直接用心算处理。
例如,
1)整数30620拆分成
30000+620
30000有4285个7,余数5加到末3位620成625,含89个7,余数2。
于是30620含(4285+89)个7,余数2。
验算(4285+89)*7+2 = 30620
2)整数60561拆分成
60000+561
60000含8571个7,余数3加到末3位561成564,含80个7,余数4。
于是60561含(8571+80)个7,余数4。
验算(8571+80)*7+4 = 60561
3)如果仅需求最大被7整除的数,则很容易。例如,
30620只需知道30000被7除的商最后1位数是5,因而余数是5,加到620成625,被7除以后余数是2。所以30620最大被7整除的数是:
30620-2 = 30618
验算:30618/7 = 4374,余数0
60561只需知道60000被7除的商最后1位数是1,因而余数是3,加到561成564,被7除以后余数是4。所以60561最大被7整除的数是:
60561-4 = 60557
验算:60557/7 = 8651,余数0
31620 = 30000+1000+620
30000余数5,1000余数6,620+5+6=631
余数1
31620-1 = 31619
验算:31619/7 = 4517,余数0
(本文为原创)
猜你喜欢
- 2025-01-18 弱类型语言的php对于 0 、"0"、"000" 、"00" 判断与处理问题
- 2025-01-18 word中公式输入方法
- 2025-01-18 VLOOKUP函数之另类用法,让领导对你刮目相看
- 2025-01-18 LOOKUP中0,1是什么鬼,困扰我多年的疑惑,这课讲明白了
- 2025-01-18 Excel – 在多个匹配结果中,按规定查找出第n个结果
- 2025-01-18 从入门到提高一一函数定义域
- 2025-01-18 C语言return 0一定要有吗?
- 2025-01-18 什么是0℃恒温器?
- 2025-01-18 VLOOKUP函数只能从左向右匹配查找?与IF函数搭配实现逆向查找
- 2025-01-18 TCP连接状态的多种判断方法
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)