3 条题解
-
1lichengjun LV 10 @ 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; }
-
02024-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; }
-
02023-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
- 标签
- 递交数
- 238
- 已通过
- 136
- 上传者