编写两个函数,分别实现两个整数的最大公倍数和最小公约数,在主函数中输入2个整数,调用后输出结果
#include<stdio.h>
int main()
{
int a,b;
int gbei,gyue;
int fgbei(int a,int b);
int fgyue(int a,int b);
printf("两个整数:\n");
scanf("%d%d",&a,&b);
gbei=fgbei(a,b);
gyue=fgyue(a,b);
printf("公倍数=%d,公约数=%d\n",gbei,gyue);
return 0;
}
int fgbei(int a,int b)
{
int i;
//最大公约数在2-min(a,b)中,倒叙遍历是比较快的 ;
for(i=(a>b?b:a);i>1;i--)//i是a,b中较小的那个数字;
{
if(a%i==0&&b%i==0)
break;
}
return i;
}
int fgyue(int a,int b)
{
int i;
//最小公倍数应该是在min(a,b)-a*b之间;
//求最小则应该从小往大遍历;
for(i=(a>b?b:a);i<a*b;i++)//i的初值应该是a,b中较小的那个
{
if(i%a==0&&i%b==0)
break;
}
return i;
}
最小公倍数=a*b/最大公约数,所以还可以用下面这个函数求:
//int fgbei2(int a,int b)
//{
// return a*b/fgyue(a,b)
// }