写两个函数,分别求出两个整数的最大公约数和最小公倍数。用主函数调用这两个函数,并输出结果。

2024-12-04 08:16:20
推荐回答(3个)
回答1:

#include<stdio.h>//0和任意的一个数的最大公约数就是那个数(最小公倍数就是0)

int yue(int x,int y)

{

int m,t;

if(y>x)

{

t=x;//将x与y的值交换

x=y;

y=t;

}

while(y!=0)

{

m=x%y;

x=y;

y=m;

}

return x;

}

int bei(int x,int y,int p)

{

return(x*y/p);

}

int main()

{

int yue(int,int);

int bei(int,int,int);

int p,q,a,b;

printf("请输入两个整数:");

scanf("%d%d",&a,&b);

q=yue(a,b);

p=bei(a,b,q);//最小公倍数=两数的乘积除以它们的最大公约数

printf("最大公约数是:%d\n最小公倍数是:%d\n",q,p);

}

扩展资料:

#include<iostream>

using namespace std;

int i;

int max(int a,int b)

{

//cout<<"max";

int s;s=i=2;

//cout<<s<<endl;

if(a>b)

{

i=b;

}

else

i=a;

do{

if(a%i==0&&b%i==0)

{

//cout<<"do里面的s!"<<s<<endl;

//cout<<"do里面的i!"<<i<<endl;

s=i;

break;

}

i--;

}while(i<a&&i<b);

//cout<<"end的s!"<<s<<endl;

//cout<<"end的i!"<<i<<endl;

return s;

}

int min(int a,int b)

{

//cout<<"min";

int s;s=1;i=2;

do{

if(i%a==0&&i%b==0)

{

//cout<<"do里面的s!"<<s<<endl;

//cout<<"do里面的i!"<<i<<endl;

s=i;break;

}

i++;

}while(i<=a*b);

//cout<<"end的s!"<<s<<endl;

//cout<<"end的i!"<<i<<endl;

return s;

}

int main()

{

int x,y,m,n;

cin>>x>>y;

m=max(x,y);n=min(x,y);

cout<<m<<""<<n;

}

回答2:

在谭浩强c程序设计学习辅导第四版的74页,书中提供了两种方法,(评论好像发不了图片,我旁边没电脑,只能帮你到这了)

回答3:

int r=a%b;
while(r!=0)
{a=b;
b=r;
r=a%b;
}
b就是最大公约数
a*b除以a,b的最大公约数就是他们的最小公倍数
#include
int gcd(int n, int m)
{
if (m==0)
return n;
else
return gcd( m, n % m );
}
int bei( int m,int n )
{
return m * n/ gcd( m, n) ;
}
void main()
{
int a,b;
printf("输入两个数\n");
scanf("%d%d",&a,&b);

int c=gcd(a,b);
int d=bei(a,b);
printf("最大公约数为:%d\t\n最小公倍数为:%d\n",c,d);

}