无限不循环小数

循环小数与无限不循环小数

大城市里の小女人 提交于 2020-01-11 16:32:57
从键盘输入分子b和分母a,判断该分数(真分数)是否是无限循环小数,并给出循环开始出现的位数。验证如下结论是否正确: (对于分数b/a,小数点至多a位, 或a位之内开始出现无限循环。) 例如: 3/8 = 0.375 //小数点不超过7位(有限小数) 1/3 = 0.333333...//从1位开始出现无限循环 1/7 = 0.142857 142857 142857 //6位开始(7位内)出现循环序列:142857 6/7 = 0.857142 857142 857142 //6位开始(7位内)出现循环序列:857142 (试试神奇的分数1/49和100/9801,100/9899) 提示: 假设分数是3/8=0.375 小数第1位上的数字是30/8的商,就是表达式30/8的值:3 30%8(求余)的值是6,那么 小数第2位上的数字是60/8的值:7 60%8(求余)的值是4,那么,小数第3位上的数字是40/8的值:5 再写的过程中遇到很多问题,逐一解决,所以在代码中可能有些复杂不够精简,限于作者水平。。。。。 此题必然还有更为简便的方案,下次想出来再改; 首先利用题目所给方法求出其小数部分,然后我的想法是取出 2a 个小数点后的数字逐一判断; 但是呢,问题出现在数字重复可能不是循环的,因为他可能就连续出现几个一样的数字; 这个问题困扰了很久,最后解决的方案不太理想,但也能解决;