#include<iostream> using namespace std; //辗转相除法 int gcd(int a,int b) { return b == 0? a:gcd(b,a%b); } //判断一个分数形式的数是否是整数 //分子上是众多的整数相乘的结果 //利用唯一分解定理,只需要去判断最后的X[2]是否为1就可以了 int judge(int *X) { X[2] /= gcd(X[1],X[2]); for(int i = 3;i <= 7;i++) { X[2] /= gcd(X[i],X[2]); } return X[2]; } //最小公倍数 //求a * b的最小公倍数,a / gcd(a,b) * b int lcm(int a,int b) { return a / gcd(a,b) * b; } int main() { int x[] = {0,1,2,1,2,4,6,8}; //printf("%d",judge(x)); printf("%d",lcm(12,9)); //12 / gcd(12,4) * 4; }
其中辗转相除法的gcd函数是绝对的核心