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

供稿:hz-xin.com     日期:2025-01-13
C语言编程:输入两个正整数,输出其中最大公约数和最小公倍数。

#include
int main(){
int a,b,num1,num2,temp;
printf("please input two number:
");
scanf("%d%d",&num1,&num2);
if(num1<num2){
temp = num1;
num1 = num2;
num2 = temp;
}
a = num1;
b = num2;
while(b!=0){ /*利用辗除法,直到b为0为止*/
temp = a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d
",a);
printf("gongbeishu:%d
",num1*num2/a);
}

扩展资料:
此题使用的是欧几里德算法,又称辗除法。
只要可计算余数都可用辗转相除法来求最大公因子,包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。
辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。
利用辗转相除法方法,可以较快地求出两个自然数的最大公因数,即gcd 或叫做HCF 。
最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf)
所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作gcd(8,12)=4。
参考资料:
百度百科-辗除法


#includemain(){ int m,n,i,m1,n1; while(1){ scanf("%d%d",&m,&n); m1=m;n1=n;i=m1%n1; for(;i!=0;){ m1=n1; n1=i; i=m1%n1; } printf("最大公约数 = %d
",n1); printf("最小公倍数 = %d
",m*n/n1);}}如图所示,望采纳。。。。。。

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

代码:

#include <stdio.h>

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
",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 <stdio.h>

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
",num1);

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

return 0;

}



#include <stdio.h>
#include <math.h>

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("
%d和%d的最大公约数为%d,最小公倍数为%d。

",m,n,i,j);
}

执行示例:

生成的可执行文件:





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

代码:

#include <stdio.h>

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
",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 <stdio.h>

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
",num1);

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

return 0;

}



#include <stdio.h>

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; //这段是求最大公约数的算法
}

15.编写程序,从键盘输人两个正整数,计算两个数的最大公约数和最小公倍...
\/\/ 输出结果 printf("最大公约数为:%d\\n", gcd);printf("最小公倍数为:%d\\n", lcm);return 0;} 程序中,首先从键盘输入两个正整数,然后使用for循环计算它们的最大公约数。在for循环中,从1到两个数中较小的数进行循环,如果两个数都能被当前循环变量整除,则将当前循环变量赋值给gcd变...

输入两个正整数,求其最大公约数和最小公倍数。
{ num1 = num2; \/\/8 7 num2 = t; \/\/7,循环继续 1 } p = p \/ num2;printf("它们的最大公约数:%d\\n", num2);printf("它们的最小公倍数:%d\\n", p);return 0;} 结果:请输入两个正整数:3,6 它们的最大公约数:3 它们的最小公倍数:6 ...

编程实现输入两个整数,输出其最大公约数和最小公倍数。
举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。代码:include <stdio.h> 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){...

编写程序,从键盘输入两个整数,调用gcd()函数求它们的最大公约数并输出...
printf("请从键盘输入du两个整数zhi:\\n");scanf("%d%d",&x,&y);printf ("它们的最大公约数是%d\\n" ,gcd ( x , y ));return 0;}

C语言 编程实现输入两个正整数,求其最大公约数和最小公倍数。
include<stdio.h>\/\/最大公约数int gcd(int a,int b){ if (a > b) { a^=b;b^=a;a^=b; } return a > 0 ? gcd (b % a, a) : b;}\/\/最小公倍数int lcm(int a, int b){ int i; if (a > b) { a^=b;b^=a;a^=b; } for ...

c++编程,输入两个正整数,输出它们的最大公约数和最小公倍数。
void){ int m,n,i,j;printf("请输入两个正整数");scanf("%d%d",&m,&n);i=(m>n?n:m);while(!(m%i==0&&n%i==0)){ i--;} printf("最大公约数:%d\\n",i);j=(m>n?m:n);while(!(j%m==0&&j%n==0)){ j++;} printf("最小公倍数:%d\\n",j);return 0;} ...

...最大公约数:输入两个正整数a和b,求它们的最大公约数.
{ int a,b,num1,num2,temp;printf("请输入两个正整数:\\n");scanf("%d,%d",&num1,&num2);if(num1<num2)\/*选出较大数*\/ { temp=num1;num1=num2;num2=temp;} a=num1,b=num2;while(b!=0)\/*辗转取余算法*\/ { temp=a%b;a=b;b=temp;} printf("它们的最大公约数为:%d...

[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
int gcd, lcm;scanf("%d%d", &m, &n);gcd = m < n ? m : n;lcm = m > n ? m : n;do { if(m % gcd == 0 && n%gcd==0)break;gcd--;}while(1);do { if(lcm % m == 0 && lcm % n==0)break;lcm++;}while(1);printf("gcd=%d lcm=%d\\n", gcd, lcm...

设计一个程序,输入两个正整数,求它们的最大公约数并输出
include<stdio.h> include<stdlib.h>int Big(int n,int m){ int max = n<m?n:m;for(int i=n;i>=1;--i){ if(n%i==0 && m%i==0){ return i;} } } int main(void){ int i,j;scanf("%d",&i);scanf("%d",&j);printf("%d",Big(i,j));} ...

c语言求两个数的最大公约数
方法一:include <stdio.h> int main(){ int m = 0;int n = 0;int tmp = 0;printf("请输入两个整数: ");scanf("%d %d", &m, &n);while (tmp = m % n){ m = n;n = tmp;} printf("最大公约数为:%d\\n", n);return 0;} 方法二:include<stdio.h> include<windows.h...