4 条题解

  • 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
          标签
          递交数
          327
          已通过
          184
          上传者