题意
2026-07-04 10:30:25
发布于:湖南
1阅读
0回复
0点赞
题意
输入两个小于 的正整数 、,找出二者最大的公共质因子;
若不存在公共质因子,输出 。
思路
求出 和 的最大公约数 ,两数所有公共因数都一定是 的因数,只需在 中寻找质因子;
编写质数判断函数:小于等于 不是质数,遍历 2 到,存在能整除 的数则不是质数;
从 从大到小倒序遍历,找到第一个能整除 且是质数的数,就是最大公共质因子;
若循环结束都没找到,直接输出初始值 。
完整代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool isPrime(ll x) {
if (x <= 1) return false;
for (ll i = 2; i * i <= x; i++) {
if (x % i == 0) return false;
}
return true;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
ll a, b;
cin >> a >> b;
ll g = __gcd(a, b);
ll maxn = 1;
for (ll i = g; i >= 2; i--) {
if (g % i == 0 && isPrime(i)) {
maxn = i;
break;
}
}
cout << maxn;
return 0;
}

这里空空如也








有帮助,赞一个