鱼C论坛

 找回密码
 立即注册
查看: 4286|回复: 4

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

[复制链接]
发表于 2019-6-24 15:04:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
例如:

1/3=0.333333……   除不尽;

1/5 =0.2                能除尽。


如何判断两个数能否除尽?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-24 15:20:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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.");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个确实写的不太好,总之思路就是,判断两个数是否互为质数,如果是互为指数,那么他肯定除不尽。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 21:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表