3 条题解

  • 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-8-6 15:55:19

      最简单的方法

      #include<bits/stdc++.h>
      using namespace std;
      int n,m;
      int main(){
      	cin>>n>>m;
      	cout<<__gcd(n,m);
      }
      
      • 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
        难度
        3
        标签
        (无)
        递交数
        19
        已通过
        18
        上传者