最大公约数和最小公倍数——递归与非递归(王道)
最大公约数:
递归:
#include <iostream> using namespace std; int gcd(int a,int b){ if(b == 0) return a; else return gcd(b,a%b);//b和a除以b的余数计算最大公约数 } int main() { int a,b; cin >> a; cin >> b; cout << gcd(a,b) << endl; return 0; }
非递归:
#include <iostream> using namespace std; int gcd(int a,int b){ while(b!=0){ int t = a%b; a=b; b=t; } return a; } int main() { int a,b; cin >> a; cin >> b; cout << gcd(a,b) << endl; return 0; }
最小公倍数:
#include <iostream> using namespace std; int gcd(int a,int b){ return b != 0 ? gcd(b,a%b) : a; } int main() { int a,b; cin >> a; cin >> b; cout << a*b/gcd(a,b) << endl; return 0; }