|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 player-none 于 2025-3-15 12:36 编辑
输入两个正整数a,b,求其最大公约数($1<=a , b<=2147483647$)。
崩溃了,怎么压缩时间啊
- #include<bits/stdc++.h>
- using namespace std;
- int main(){
- int a,b;
- cin>>a>>b;
- if(a<b){
- swap(a,b);
- }
- if(a%b==0){
- cout<<b;
- }else{
- int zuida;
- for(int i=1;i<=b;++i){
- if(a%i==0&&b%i==0){
- zuida=i;
- }
- }
- cout<<zuida;
- }
- return 0;
- }
复制代码
看起来你的问题是关于求两个正整数的最大公约数(GCD)。你可以使用欧几里得算法(辗转相除法)来计算 GCD,以下是 C++ 代码示例:
- #include <iostream>
- int gcd(int a, int b) {
- while (b != 0) {
- int temp = b;
- b = a % b;
- a = temp;
- }
- return a;
- }
- int main() {
- int a, b;
- std::cin >> a >> b;
- std::cout << gcd(a, b) << std::endl;
- return 0;
- }
复制代码
这个算法的核心思想是:
- 如果 `b` 不为 0,则 `gcd(a, b) = gcd(b, a % b)`,不断递归或迭代,直到 `b == 0`,此时 `a` 就是最大公约数。
如果你有更具体的问题,欢迎继续提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|