判断分数是否为无限循环小数

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));
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容