鱼C论坛

 找回密码
 立即注册
查看: 2346|回复: 2

[已解决]python无限循环小数

[复制链接]
发表于 2018-3-14 17:12:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入分子p,分母q,判断p/q是否为有限/无限
p//q是整数部分,小数点后面的用sigma和tau组成,tau是循环的小数
比如1/3=0.333333,是无限的,可以写成0.(3)*,整数部分是0,sigma是0,tau是3
比如1233/9990=0.1234234234,就是0.1(234)*那么整数部分是0,sigma是1,tau是234

我用了gcd求p和q的最大公约数,然后分母q再除以最大公约数,判断分母是否有2或者5来是否为有限
但是会有一些bug出现
不知道还有什么方法判断有限和无限呢?还有后面的sigma和tau的长度怎么算?
求助大神~!!
最佳答案
2018-3-14 19:08:53
简单分析一下:首先去除p是q的倍数的情况,然后只要考虑1/q即可。这是因为如果1/q是无限循环则2/q~(q-1)/q都是无限循环,超过q的对q取模是整数部分。例如:1/7=0.142857(5位循环),则把它乘2、3、4、5、6都是无限循环的。
你也分析出q为2和5时不是无线循环,这样就好办了。把q分解质因子,去掉2和5后,如果还有因子则是无限循环的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-14 18:12:27 From FishC Mobile | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-3-14 18:14 编辑

分子分母同时除以最大公约数后,分母分解后因子只包含1、2、5。比如4=2×2,10=2×5,25=5×5就不是循环小数。6=2×3,15=3×5,则是循环小数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 19:08:53 | 显示全部楼层    本楼为最佳答案   
简单分析一下:首先去除p是q的倍数的情况,然后只要考虑1/q即可。这是因为如果1/q是无限循环则2/q~(q-1)/q都是无限循环,超过q的对q取模是整数部分。例如:1/7=0.142857(5位循环),则把它乘2、3、4、5、6都是无限循环的。
你也分析出q为2和5时不是无线循环,这样就好办了。把q分解质因子,去掉2和5后,如果还有因子则是无限循环的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-8 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表