#include <stdio.h>
int FindPrime (int num_1,int num_2);
void Max_swap (int* bigger,int* smaller);
int main ()
{
int num_1, num_2,Prime,LCM;//Prime为最大公因数,LCM(Least common multiple) 最小公倍数
scanf ("%d %d",&num_1,&num_2);
Prime = FindPrime (num_1,num_2);
LCM = num_1*num_2/Prime;
printf ("^Prime = %d^\n^Least common multiple = %d^\n",Prime,LCM);
return 0;
}
int FindPrime (int num_1,int num_2)
{//求最大公因数,辗转相除法
int temp = 1;
while (temp){
Max_swap (&num_1,&num_2);//总是将 num_1 调成大于num_2
temp = num_1 - num_2;
num_1 = temp;
}
return num_2;
}
void Max_swap (int* bigger,int* smaller)
{//将两个数重新排列 并总是将第一个数置为更大的一个
if (*bigger<*smaller){
int temp;
temp = *bigger;
*bigger = *smaller;
*smaller = temp;
}
}
C语言 求最大公因数 和 最大公倍数
最新推荐文章于 2024-03-01 13:02:23 发布