2 条题解

  • 2
    @ 2023-3-21 18:36:15

    这道题目用碾转相除法,不知道的看这个: https://zhidao.baidu.com/question/156706020.html

    代码如下

    #include<bits/stdc++.h>
    using namespace std;
    long long a,b,c;
    int main()
    {
    	cin>>a>>b;
    	if(b>a) swap(a,b);
    	do
    	{
    		c=a%b;
    		a=b;
    		b=c;
    	}while(a%c!=0||b%c!=0);
    	cout<<c;
    	return 0; 
    }
    
    • 1
      @ 2025-7-2 10:04:41

      这道题可以用辗转相除或者辗转相减法

      辗转相减:

      #include<bits/stdc++.h>
      using namespace std;
      long long a,b,c;
      int i=0;
      long long gcd(long long x,long long y){
      	
      	if(y==0)return x;
      	if(x==0)return y;
      	i++;
      	return gcd(max(x,y)-min(x,y),min(x,y));
      }
      int main(){
      	cin>>a>>b;
      	cout<<gcd(a,b);
          return 0;
      }
      

      辗转相除

      #include<bits/stdc++.h>
      using namespace std;
      long long a,b,c,d,s;
      int i=0;
      long long gcd(long long x,long long y){
      	if(y==0)return x;
      	return gcd(y,x%y);
      }
      int main(){
      	
      	cin>>a>>b;
      	cout<<gcd(a,b);
          return 0;
      }
      
      • 1

      信息

      ID
      351
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      (无)
      递交数
      18
      已通过
      17
      上传者