2 条题解

  • 1
    @ 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
      标签
      递交数
      230
      已通过
      131
      上传者