技术心得:循环小数与无限不循环小数

简介: 技术心得:循环小数与无限不循环小数

从键盘输入分子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 个小数点后的数字逐一判断;


但是呢,问题出现在数字重复可能不是循环的,因为他可能就连续出现几个一样的数字;


这个问题困扰了很久,最后解决的方案不太理想,但也能解决;


其他的循环与不循环相对较容易;


代码如下:


1 #include


2 using namespace std;


3


4 int main()

//代码效果参考: http://www.lyjsj.net.cn/wz/art_23494.html


5 {


6 int b,a;


7 cin]b]a;


8 int arr【a2+1】 ,i,j,k,temp,m,n;


9 int sign,sum = 0;


10 temp = b;


11 for(i = 1; i <= a2; i++) // 2a位小数


12 {


13 temp = 10;


14 arr【i】 = temp / a;


15 temp %= a;


16 // cout[arr【i】;


17 if(i>a)


18 sum += arr【i】;


19 }


20 if(sum == 0)


21 cout["该分数为有限//代码效果参考:http://www.lyjsj.net.cn/wz/art_23484.html

小数"[endl;

22 else


23 {


24 for(i = 1;i <= 2a;i++)


25 {


26 for(j = 1;j < i;j++) // 有相等


27 {


28 if(arr【i】 == arr【j】)


29 {


30 sign = 0;


31 m = i-j; // 循环位数


32 if(m != 1) // 必为不相同循环 2 329


33 {


34 for(k = 1;k < a;k++) // 保证中间无小段循环


35 if(arr【i+k】 != arr【j+k】)


36 sign++;


37 }


38 else // 必为相同循环


39 {


40 for(k = 1;k <= a - j;k++)


41 if(arr【j】 != arr【j+k】)


42 //代码效果参考:http://www.lyjsj.net.cn/wx/art_23492.html

sign++;

43 }


44 }


45 if(sign == 0) // 确定为循环


46 {


47 n = i - 1; // 起始循环点


48 break;


49 }


50 }


51 if(sign == 0)


52 break;


53 }


54 if(sign == 0)


55 cout["该分数为无限循环小数,循环位数:"[n[endl;


56 else


57 cout["该分数为无限不循环小数"[endl;


58 }


59 return 0;


60 }


测试例子:


3 8


1 3


1 7


1 49


输出:


该分数为有限小数


该分数为无限循环小数,循环位数:1


该分数为无限循环小数,循环位数:6


该分数为无限循环小数,循环位数:42


2020-01-1115:35:53

相关文章
|
6月前
|
人工智能 搜索推荐 大数据
探索虚拟现实技术的无限可能性
在当今数字化快速发展的时代,虚拟现实技术正日益引起人们的关注。本文将从技术创新、用户体验和未来发展等方面探讨虚拟现实技术的无限可能性,带领读者一同探索这个令人兴奋的数字世界。
77 1
|
10天前
|
人工智能 搜索推荐 区块链
元宇宙构建者:探索虚拟世界的无限可能性
在科技飞速发展的今天,元宇宙正逐步从科幻概念变为现实。本文探讨元宇宙构建者的角色、挑战与技术创新,以及他们如何塑造未来数字世界的愿景。构建者不仅需推动技术进步,还要关注社会伦理、隐私保护和数据安全,确保元宇宙的健康发展。
|
1月前
|
人工智能 自然语言处理 前端开发
人工智能时代,我们依旧有无限的选择权!
“莫愁前路无知己” - 本文主要是为了缓解焦虑,以我与AI的互动为主线,分享了从童年科幻梦到工作中应用AI的经历。探讨了AI的现状与未来,强调了AI辅助编程的潜力和挑战,以及个人和企业应如何应对AI时代的变革。AI虽可能替代很多岗位,但也能带来新的机遇,关键在于适应和利用。
|
2月前
|
人工智能 大数据 区块链
|
4月前
|
机器学习/深度学习 人工智能 算法
探索代码世界的无限可能
在数字化时代的浪潮中,编程技术如同一把钥匙,开启了通往未来的大门。本文将深入探讨编程的奥秘,从基础概念到实用技巧,再到行业趋势的洞悉,带领读者领略编程世界的广阔与深邃。
|
5月前
|
数据挖掘
探索技术的无限可能
【6月更文挑战第15天】在这篇文章中,我将分享我的技术感悟,探讨技术如何改变我们的生活和工作方式。我将从个人经验出发,讨论技术如何帮助我们解决问题,提高效率,以及如何激发我们的创新精神。
|
5月前
|
机器学习/深度学习 人工智能 大数据
探索后端技术的无限可能性
在当今数字化时代,后端技术正扮演着越来越重要的角色。本文将探讨后端技术的发展趋势,包括云计算、大数据处理、微服务架构等方面,并展示后端技术的无限可能性和应用前景。
|
5月前
|
程序员 Python
探索技术的无限可能:我的编程之旅
【6月更文挑战第8天】在这篇文章中,我将分享我在编程世界的旅程,以及我如何通过技术解决实际问题。我将讨论我从初学者到熟练程序员的转变,以及我在这个过程中学到的一些重要经验。我希望我的故事能够激励他人也去探索技术的无限可能。
36 3
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
探索未来AI技术的无限可能性
在当今快速发展的科技时代,人工智能技术正日益成为各行各业的重要组成部分。本文将深入探讨AI技术的发展趋势和未来的潜在应用领域,从自然语言处理到智能机器人,展示AI技术在改变我们生活和工作方式的同时,带来的无限可能性。
40 1
|
6月前
|
人工智能 自动驾驶 搜索推荐
未来AI技术的无限可能性
随着人工智能技术的不断发展,其在各个领域中的应用也变得越来越广泛。本文将探讨未来AI技术的无限可能性,从智能驾驶到医疗保健再到教育领域,展示AI技术对未来社会的深远影响。
47 1
下一篇
无影云桌面