题解
2023-11-18 16:27:07
发布于:广东
149阅读
0回复
0点赞
辗转相除法,如果余数为0就返回较小数,否则继续除:
求54与36的最大公约数
54 36
54%36=18
36 18
36%18=0
所以54与36的最大公约数为18
而且任意两个数的最大公约数乘以最小公倍数的积等于这两个数的积
例如
54与36最大公约数为108,最小公倍数为18
而54*36=108*18=1944
AC代码:
#include <iostream>
using namespace std;
int yue(int a, int b){
int yushu = a % b;
if(yushu == 0) return b;
return yue(b, yushu);
}
int ct;
int main(){
int n, m;
cin >> n >> m;
for(int i = 1; i <= n * m; i ++){
if(n * m % i != 0) continue;
int j = n * m / i;
int ans = yue(max(i, j), min(i, j));
if(ans == n) ct++;
} cout << ct;
return 0;
}
全部评论 5
函数写的是什么
2024-07-28 来自 广东
0man!what can I say!
2024-07-28 来自 广东
0顶
2023-11-18 来自 广东
0顶
2023-11-18 来自 广东
0顶
2023-11-18 来自 广东
0
有帮助,赞一个