2 条题解
-
1
这道题用递归也可以
辗转相减法
#include<bits/stdc++.h> using namespace std; int gcd(int a,int b){ if (a==b) return a;//当a和b相等时直接返回a或b即可 else if (a>b) { return gcd(b,a-b); }else{ return gcd(a,b-a); } } int main(){ int a,b; cin>>a>>b; cout<<gcd(a,b); }
辗转相除法
#include<bits/stdc++.h> using namespace std; int gcd2(int a,int b){ if (b==0) return a; else return gcd2(b,a%b); } int main(){ int a,b; cin>>a>>b; cout<<gcd2(a,b); }
由于减法和除法本质上是一样的,所以两种方法基本上也一样
- 1
信息
- ID
- 99
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 28
- 已通过
- 21
- 上传者