6 条题解

  • 1
    @ 2026-3-13 20:25:58
    #include<bits/stdc++.h>
    using namespace std;
    int gcd(int a,int b)
    {
    	if(b==0)return a;
    	return gcd(b,a%b);
    }
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	//cout<<gcd(n,m);
    	cout<<__gcd(n,m);
    	return 0;
    }
    
    

    新解法

    • 1
      @ 2026-1-30 19:18:58
      #include<bits/stdc++.h>
      using namespace std;
      long long m,n;
      long long r;
      long long f(long long x,long long y)
      {
      	if(x%y==0)
      	{
      		return y;
      	}
      	return f(y,x%y);
      }
      int main()
      {
      	cin>>m>>n;
      	cout<<f(m,n);
      	return 0;
      }
      
      
      
      • 1
        @ 2025-8-19 14:39:29
        #include <stdio.h>
        #include <algorithm>
        #include <iostream>
        int n, m;
        int main()
        {
        	scanf("%d %d\n", &n, &m);
        	printf("%d\n", std :: __gcd(n, m));
        	return 0;
        }
        
        • 0
          @ 2024-9-8 14:24:30
          #include<bits/stdc++.h>
          using namespace std;
          const int N=1e5+10;
          int gcd(int m,int n){
          	if(n==0)return m;
          	else return gcd(n,m%n);
          }
          int main(){
          	int m,n;cin>>m>>n;
          	cout<<gcd(m,n)<<endl;
          	return 0;
          }
          
          • 0
            @ 2023-3-28 20:19:56

            辗转相除法:

            #include<iostream>
            using namespace std;
            int a,b;
            int gb(int x,int y){
            	int r=x%y;
            	while(r){
            		x=y;
            		y=r;
            		r=x%y;
            	}
            	return y;
            }
            int main(){
            	cin>>a>>b;
            	if(a>b)swap(a,b);
            	cout<<gb(a,b);
            	return 0;
            }
            
            • 0
              @ 2023-2-3 21:51:23
              #include<bits/stdc++.h>
              using namespace std;
              int main(){
              	long long a,b,c=1;//定义要输入的两个数据和最大公约数并给最大公约数赋予初始值 
              	cin>>a>>b;//输入这两个数据 
              	if(a>b){//判断a是否大于b 
              		for(int i=2;i<b;i++){//找公约数得从2开始
              			if(a%i==0&&b%i==0){//判断这两个数据是否都能被i整除 
              				c=i;//将c的值改为i 
              			}
              		}
              	}
              	else if(a==b){//判断a是否等于b 
              		c=b;//如果是就直接将c的值改为a或b 
              	}
              	else{//如果都不是的话就说明a<b 
              		for(int i=1;i<a;i++){//跟前面的循环作用一样 
              		    if(a%i==0&&b%i==0){
              			    c=i;
              		    } 
              		}
              	}
              	cout<<c;//输出最大公约数 
              	return 0;//结束程序 
              }
              
              • 1

              信息

              ID
              937
              时间
              1000ms
              内存
              128MiB
              难度
              3
              标签
              递交数
              377
              已通过
              208
              上传者