解决的5种方法
2025-12-13 13:54:12
发布于:江苏
1阅读
0回复
0点赞
题目要求的递归:
#include<bits/stdc++.h> //万能头棒棒哒
//#include<windows.h>
//#include<conio.h>
using namespace std;
int gcd(int a,int b){
if(b%a==0){
return a;
}
return gcd(b%a,a);
}
int main(){
int n,m;
cin>>n>>m;
cout<<gcd(n,m);
return 0;
}
暴力枚举:
#include<bits/stdc++.h> //万能头棒棒哒
//#include<windows.h>
//#include<conio.h>
using namespace std;
int main(){
long long n,m;
cin>>n>>m;
int i=n*m;
while(true){
if(n%i==0&&m%i==0){
break;
}else{
i--;
}
}
cout<<i;
return 0;
}
省时又省力的__gcd:
#include<bits/stdc++.h> //万能头棒棒哒
//#include<windows.h>
//#include<conio.h>
using namespace std;
int main(){
long long n,m;
cin>>n>>m;
cout<<__gcd(n,m);
return 0;
}
辗转相除法:
#include<bits/stdc++.h> //万能头棒棒哒
//#include<windows.h>
//#include<conio.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
while(true){
if(m%n==0){
cout<<n;
return 0;
}else{
int tmp=n;
n=m%n;
m=tmp;
}
}
return 0;
}
三目运算符 真的是给人看的吗:
#include<bits/stdc++.h> //万能头棒棒哒
//#include<windows.h>
//#include<conio.h>
using namespace std;
int gcd(int a,int b){
return a==0?b:gcd(b%a,a); //格式: 条件 ? 真时取值 : 假时取值
}
int main(){
int n,m;
cin>>n>>m;
cout<<gcd(n,m);
return 0;
}
这里空空如也



有帮助,赞一个