判断分数是否为无限循环小数
0.前言
之前做编程题,有一个部分需要判断一个分数是否为无限循环小数,挺有意思,特此整理记录如下:
问题描述(大概意思是)
已知分子a和分母b ,判断 分数a/b是否为无限循环小数
1.已知结论
将分数化为
最简分数
后,分母的全部因数
(除去1和其自身)没有为2或5以外的数,则该分数就不是无限循环小数
;否则为无限循环小数。
首先我们看 1/n的实际含义:将 1 分成n份,每一份的大小
那么10/n的实际含义:将 10 分成n份,每一份的大小
对于将 10 分成n份
这个话题,如果假设每份必须为整数
,那么n的取值(去掉1或者10),只能是2或5
最简分数
是否为无限循环小数
,与分子没有关系。
2.问题解决
2.1求分子分母的最大公约数
此处可用辗转相除法
求最大公约数
2.2 判断最简分数
的分母的因子
此处可直接将分母分别整除以
多次2和5即可
3.代码实现
import java.util.Scanner;
/*** @Title:InfiniteLoop.java* @author Stone6762* @CreationTime 2018年6月12日 下午10:18:39* @Description: 判断一个分数是否为无限循环小数*/
public class InfiniteLoop {/*** @Title greatestCommonDivisor* @Describe求最大公约数* @param a* @param b* @return*/public static long greatestCommonDivisor(long a, long b) {long c = 0;while (true) {// 循环的辗转相除法c = a % b;a = b;b = c;if (b == 0) {return a;}}}/*** @Title isLoop* @Describe a/b是否为无限循环小数* @param a分子* @param b分母* @return*/public static boolean isLoop(long a, long b) {// 1.化简,分子分母同时除以最大公约数long commonDivisor = greatestCommonDivisor(a, b);b = b / commonDivisor;// 2.判断分母是否为2的次幂,5的次幂,或者2 5结合// 首先让其除以2的次幂while (b % 2 == 0) {b /= 2;}// 然后让其除以5的次幂while (b % 5 == 0) {b /= 5;}// 最后判断是否为1,如果为1 说明没有 2或者5或者2和5结合构成 以外的因子if (b == 1) {return false;} else {return true;}}public static void main(String[] args) {Scanner scan = new Scanner(System.in);while (scan.hasNext()) {int a = scan.nextInt();int b = scan.nextInt();System.out.println( a+"/"+b+"的结果是否为无限循环小数: " + isLoop(a, b));}}
}
判断分数是否为无限循环小数相关推荐
- 判断一个分数是否为无限循环小数
#include <stdio.h>int main() {int remiander[101] = {0};//存放余数int quotient[101] = {0};int m;int ...
- 无限循环小数化为分数
前几天被一个小朋友的问题难住了,是怎样将无限循环小数化为分数.当时听到这个问题的时候,第一反应是:这个学过啊,但是自己一点印象都没有啊,在这么多人面前,自己还是个研究生,太丢人了吧.还好小朋友比较给面 ...
- 把无限循环小数化为分数
把无限循环小数化为分数 给定一个无限循环小数,我们是否能把它化为分数呢?其实方法也很简单,其关键在于利用「无限循环」这一点.例如,给定小数0.272727...,如何把它化为分数呢?我们可以先把它写成 ...
- python判断循环小数_python如果一个数是为无限循环小数,返回分数格式,否则返回小数格式...
1.读题 2.思考 一个最简分数,分母如果只包含2和5的因数就可以化成有限小数.如果含有2和5以外的因数就只能化成无限循环小数. 例如:1/2,1/8,1/20,5/32,9/40就可以化成有限小数. ...
- 有限小数用c语言,分数化为有限小数或无限循环小数(c实现)
问题描述: 将分数转化为小数,相信很多人都会吧.那么,这里给定一个分数N/D,N为分子,D为分母(N,D均为整数),试编程求出N/D的小数形式,当然如果这个小数为无限循环小数,则把循环的部分用括号括起 ...
- 如何将无限循环小数转化为分数
无限循环小数也是有理数,而有理数是能表示为两个整数之比的数.如何将无限循环小数转化成分数? 以 0.148257148257... 0.148257148257...为例. 它的循环部分为: 1482 ...
- 无限循环小数化分数、
循环小数分为混循环小数.纯循环小数两大类. 混循环小数可以*10^n(n为小数点后非循环位数),所以循环小数化为分数都可以最终通过纯循环小数来转化. 等比数列法编辑 无限循环小数,先找其循环节(即循环 ...
- 如何将无限循环小数转换为分数
将一个无限循环小数转换为分数 例如: 32.5632323232......... 1.设x=32.5632323232......... 则 y=x*10000 y=325632.32323232. ...
- 无限循环小数转化分数
问题 给出一个无限循环小数以及循环节,求原最简分数,例如输入 5.3 1 表示从小数点后一位开始循环,也就是循环小数是5.33333-.. 输出结果是 16/3 分析 其实一个简单的数学结论就可以解决 ...
- 无限循环小数POJ1930
题意:给定一个无限循环小数,求其分数形势,要求分母最小 分析:看了别人的题解才做出来的,将无限循环小数转化成分数,分为纯循环和混循环两种形式. (1)对于纯循环:用9做分母,有多少个循环数就几个9,比 ...
最新文章
- 最最基本的Git入门 -- 本地仓库操作
- C语言 · 计算时间
- 成功解决pillow模块内生成的非UTF-8格式(比如label中有汉字时)
- 【Grafana】函数
- 2、MyEclipse和Eclipse调优,MyEclipse配置(tomcat和jdk的内存设置),jar引入相关知识点,将Java项目编程web项目的办法
- CAS Client 3.2.1 配置详解
- opencv批量灰度转换_OpenCV图像处理之常见的图像灰度变换
- 计算机网络网络层之层次路由
- SFB 项目经验-44-别以为Hyper-V比VMware差太多(仅个人观点,不喜误喷,谢谢)
- Keras ImageDataGenerator参数
- XXX集团财务决策支持系统——现有系统功能(系列三)
- 如何将电脑图片缩小kb?图片怎么压缩大小?
- python 操作excel笔记
- 百度AI 开放平台 - 各大AI 开放平台开放能力解读和分析,技术的应用场景,技术前景
- 常见的常微分方程的一般解法
- 三星oneui主屏幕费电_三星最新力作,第三方桌面无处遁形,OneUI越来越自由
- 多任务学习时转角遇到Bandit老虎机
- 长度短点的uuid_如何压缩UUID长度?
- SCI论文从入门到精通——IEEE论文那些事儿
- 音质好的蓝牙耳机推荐哪款?佩戴舒适的四款蓝牙耳机盘点
热门文章
- 基于javaweb+JSP+Servlet宿舍管理系统(超级管理员、宿舍管理员、学生)
- 计算机管理创建超级用户,win10系统怎么创建超级管理员账户
- SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云解决方案之服务器系统硬件资源管理
- java通过freemarker导出包含富文本图片的word文档
- 13_大数据之数据可视化_note
- 影响我一生的两本书(02)_huadingjin_新浪博客
- 【谷歌地图--PlacesSDK集成】
- java调用腾讯企业邮箱给谷歌(gmail)邮箱发送邮件丢失或进入垃圾邮箱
- Linux - send 出现 Resource temporarily unavailable
- 计算机老是重启进不了桌面,电脑无限重启进不桌面