编程实现输入两个整数,输出其最大公约数和最小公倍数。

2024-11-06 14:04:34
推荐回答(4个)
回答(1):

举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。

代码:

#include

int main(void)

{

int gcd, lcm, m, n;

int repeat, ri;

scanf("%d", &repeat);

for(ri = 1; ri <= repeat; ri++)

{

scanf("%d", &m);

scanf("%d", &n);

if(m <= 0 || n <= 0)

{  printf("m <= 0 or n <= 0");

continue;

}

for(gcd=m; gcd >= 1; gcd--){

if(m % gcd == 0 && n % gcd == 0) break;

}

lcm = m * n / gcd;

printf("%d, %d\n",lcm, m, n, gcd, m, n);

}

}

运行效果:

输入输出示例:括号内为说明

输入:

3(repeat=3)

37(m=3,n=7)

244(m=24,n=4)

2418(m=24,n=18)

输出:

21,1.

24,4.

72,6.

扩展资料:

辗转相除法:

#include

int main()

{

int m,n;

scanf("%d %d",&a,&b);  //输入两个整数

int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量

if(a>=b)  {num1=a; num2=b; }

else      {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算

while(num2>0){

c=num1%num2;

num1=num2;

num2=c;}//辗转相除,num2=0时,num1=最大公因数

printf("最大公因数:%d\n",num1);

printf("最小公倍数:%d\n"m*n/num1);

return 0;

}

回答(2):

#include 
#include 

int gcd(int a,int b)
{
int k=1;
while (k!=0)
{k=b%a;b=a;a=k;}
return b;
}

int main()
{
int m,n,i,j,t;
printf("请输入两个正整数:  ");
scanf("%d,%d",&m,&n);
if(m>n)
{t=m;m=n;n=t;}
i=gcd(m,n);
j=m*n/i;
    printf("\n%d和%d的最大公约数为%d,最小公倍数为%d。\n\n",m,n,i,j);
}

执行示例:

生成的可执行文件:



回答(3):

举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。

代码:

#include

int main(void)

{

int gcd, lcm, m, n;

int repeat, ri;

scanf("%d", &repeat);

for(ri = 1; ri <= repeat; ri++)

{

scanf("%d", &m);

scanf("%d", &n);

if(m <= 0 || n <= 0)

{  printf("m <= 0 or n <= 0");

continue;

}

for(gcd=m; gcd >= 1; gcd--){

if(m % gcd == 0 && n % gcd == 0) break;

}

lcm = m * n / gcd;

printf("%d, %d\n",lcm, m, n, gcd, m, n);

}

}

运行效果:

输入输出示例:括号内为说明

输入:

3(repeat=3)

37(m=3,n=7)

244(m=24,n=4)

2418(m=24,n=18)

输出:

21,1.

24,4.

72,6.

扩展资料:

辗转相除法:

#include

int main()

{

int m,n;

scanf("%d %d",&a,&b);  //输入两个整数

int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量

if(a>=b)  {num1=a; num2=b; }

else      {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算

while(num2>0){

c=num1%num2;

num1=num2;

num2=c;}//辗转相除,num2=0时,num1=最大公因数

printf("最大公因数:%d\n",num1);

printf("最小公倍数:%d\n"m*n/num1);

return 0;

}

回答(4):

#include

int main (void)
{
int m, n, p, tmp;

printf ("Please type in two number:\n");
scanf ("%i %i", &m, &n); //输入两个数,分别放入m, n
p=m*n; //先把两数的积算出来,后面m和n的值会有变

while (n!=0){
tmp=m%n;
m=n;
n=tmp; //这段是求最大公约数的算法
}