菜鸟小乔 发表于 2019-6-24 15:04:06

C++怎样判断两个数相除是否“除尽”,(不是整除)

例如:

1/3=0.333333……   除不尽;

1/5 =0.2                能除尽。


如何判断两个数能否除尽?

newu 发表于 2019-6-24 15:20:59

https://blog.csdn.net/qq_31029351/article/details/53677897

菜鸟小乔 发表于 2019-6-24 19:13:37

newu 发表于 2019-6-24 15:20
https://blog.csdn.net/qq_31029351/article/details/53677897

他这个不对吧,没做任何判断怎么就printf("m/n 是一个有限不循环小数 0.");

newu 发表于 2019-6-24 19:54:10

菜鸟小乔 发表于 2019-6-24 19:13
他这个不对吧,没做任何判断怎么就printf("m/n 是一个有限不循环小数 0.");

这个确实写的不太好,总之思路就是,判断两个数是否互为质数,如果是互为指数,那么他肯定除不尽。

Croper 发表于 2019-6-24 23:54:52

约分后,如果分母的质因数只有2和5,那么能除尽,否则不能除尽
代码//求最大公约数
unsigned int gcd(unsigned int a,unsigned int b){
        if (a<b){
                int c=a;
                a=b;
                b=c;
        }
        while (b!=0){
                int c=a%b;
                a=b;
                b=c;
        }
        return a;
}


int func(unsigned int m,unsigned int n){
        n/=gcd(m,n);
        while (n%2==0){
                n/=2;
        }
        while (n%5==0){
                n/=5;
        }
        return n==1;
}
页: [1]
查看完整版本: C++怎样判断两个数相除是否“除尽”,(不是整除)