编写一个程序,输入两个正整数,输出它的最大公约数(使用辗转相除法),输出它们的最小公倍数。要C++的

2024-12-02 15:44:43
推荐回答(2个)
回答1:

#include
unsigned int gcd ( unsigned int a,unsigned int b)
{
unsigned int max,min ;
max=a;
min=b;
do {
if ( max < min )
{
int temp=max ;
max=min;
min=temp ;
}
max -= min ;
} while( max != min ) ;
return min ;
}
int main( void )
{
unsigned int m,n,mu;
printf("请输入两个正整数:");
scanf("%u%u",&m,&n);
while ( m==0 || n==0 )
{
printf("输入错误,不能输入0\n");
scanf("%u%u",&m,&n);
}
mu=gcd ( m,n ) ;
printf("%u与%u的最大公约数为:%u\n",m,n,mu );
printf("%u与%u的最小公倍数为:%u\n",m,n,m/mu*n );
return 0;
}

回答2:

#include
main()
{
int b,m,n,j,k,result;
printf("Enter two number:");
scanf("%d,%d",&m,&n);
b=m*n;
if(m>0&&n>0)
{
do
{
k=m%n;
if(k==0)
result=n;
else
{m=n;
n=k;}
}
while(k>0);
j=b/result;
}
printf("最大公约数=%d,最小公倍数=%d",result,j);
}