辗转相除法
利用辗转相除法求 两数的最大公因数 或 最小公倍数
例如 求6497和3869的最大公因数和最小公倍数
6497÷3869=1……2628
3869÷2628=1……1241
2628÷1241=1……146
1241÷146=8……73
146÷73=2……0
则 最大公因数为 73
最小公倍数为 6497×3869÷73=344341
如下 代码
#include<iostream> using namespace std; int s[500]; __int64 x,y; int g(int a,int b) { int i,t; y=a*b; if(a<b){ t=a; a=b; b=t; } while(b){ t=b; b=a%b; a=t; } return y/a; // a为两数的最大公因数,y/a为两数的最小公倍数 } void f(int s[],int n) { x=s[0]; for(int i=1;i<n;i++){ x=g(s[i],x); } cout<<x<<endl; } int main() { int n; cin>>n; while(n--){ int a; cin>>a; for(int i=0;i<a;i++)cin>>s[i]; //求数组s中所有数的最大公因数最小公倍数 f(s,a); } //system("pause"); return 0; }