鱼C论坛

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

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

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

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

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

x
例如:

1/3=0.333333……   除不尽;

1/5 =0.2                能除尽。


如何判断两个数能否除尽?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-6-24 15:20:59 | 显示全部楼层
小甲鱼最新课程 -> https://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.");
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个确实写的不太好,总之思路就是,判断两个数是否互为质数,如果是互为指数,那么他肯定除不尽。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-24 23:54:52 | 显示全部楼层
约分后,如果分母的质因数只有2和5,那么能除尽,否则不能除尽
代码
  1. //求最大公约数
  2. unsigned int gcd(unsigned int a,unsigned int b){
  3.         if (a<b){
  4.                 int c=a;
  5.                 a=b;
  6.                 b=c;
  7.         }
  8.         while (b!=0){
  9.                 int c=a%b;
  10.                 a=b;
  11.                 b=c;
  12.         }
  13.         return a;
  14. }


  15. int func(unsigned int m,unsigned int n){
  16.         n/=gcd(m,n);
  17.         while (n%2==0){
  18.                 n/=2;
  19.         }
  20.         while (n%5==0){
  21.                 n/=5;
  22.         }
  23.         return n==1;
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 13:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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