3 条题解

  • 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);
    }
    
    由于减法和除法本质上是一样的,所以两种方法基本上也一样
    • 0
      @ 2025-7-13 22:00:04

      自己按照图片公式模拟即可

      using namespace std;
      int gcd(int x,int y)
      {
          if(y==0)
          {
              return x;
          }
          else
          {
              return gcd(y,x%y);
          }
      }
      int main()
      {
          int x,y;
          cin>>x>>y;
          cout<<gcd(y,x%y);
      }
      
      
      • -2
        @ 2024-10-2 16:02:13
        #include<bits/stdc++.h>
        using namespace std;
        
        int gcd(int a, int b) {
            if (b == 0) {
                return a;
            } else {
                return gcd(b, a % b);
            }
        }
        
        int main(){
        	int a,b,x;
        	x = gcd(a,b);
        	cout<<x;
        
        	return 0;
        }
        
        • 1

        信息

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