2 条题解

  • 1
    @ 2025-1-23 15:40:52

    这道题用递归也可以

    辗转相减法

    #include<bits/stdc++.h>
    using namespace std;
    
    int gcd(int a,int b){
    	if (a==b) return a;//当a和b相等时直接返回a或b即可
    	else if (a>b) {
    		return gcd(b,a-b);
    	}else{
    		return gcd(a,b-a);
    	}
    }
    
    int main(){
    	int a,b;
    	cin>>a>>b;
    	cout<<gcd(a,b);
    }
    

    辗转相除法

    #include<bits/stdc++.h>
    using namespace std;
    
    int gcd2(int a,int b){
    	if (b==0) return a;
    	else return gcd2(b,a%b);
    }
    
    int main(){
    	int a,b;
    	cin>>a>>b;
    	cout<<gcd2(a,b);
    }
    
    由于减法和除法本质上是一样的,所以两种方法基本上也一样

    信息

    ID
    99
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    28
    已通过
    21
    上传者