c语言编程求两个正整数的最大公约数和最小公倍数!

供稿: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。
参考资料:
百度百科-辗除法

#include
int main()
{
int p,r,n,m,temp;
printf("请输入两个正整数:");
scanf("%d,%d",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("最大公约数:%d
",n);
printf("最小公倍数:%d
",p/n);
return 0;
}

main()
{
int p,r,n,m,temp;
printf("Please enter 2 numbers n,m:");
scanf("%d,%d",&n,&m);//输入两个正整数.
if(n<m)//把大数放在n中,把小数放在m中.
{temp=n;
n=m;
m=temp;
}
p=n*m;//P是原来两个数n,m的乘积.
while(m!=0)//求两个数n,m的最大公约数.
{
r=n%m;
n=m;
m=r;
}
printf("Its MAXGongYueShu:%d\n",n);//打印最大公约数.
printf("Its MINGongBeiShu:%d\n",p/n);打印最小公倍数.
基本原理如下:
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
例如求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0。
1515和600的最大公约数是15。

两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。
例 求105和42的最小公倍数。
因为105和42的最大公约数是21,
105和42的积是4410,4410÷21=210,
所以,105和42的最小公倍数是210。

1.main()
2.{
3.int p,r,n,m,temp;
4.printf("Please enter 2 numbers n,m:");
5.scanf("%d,%d",&n,&m);//输入两个正整数.
6.if(n<m)//把大数放在n中,把小数放在m中.
7.{temp=n;
8.n=m;
9.m=temp;
10.}
11.p=n*m;//P是原来两个数n,m的乘积.
12.while(m!=0)//求两个数n,m的最大公约数.
13.{
14.r=n%m;
15.n=m;
16.m=r;
17.}
19.printf("Its MAXGongYueShu:%d\n",n);//打印最大公约数.
20.printf("Its MINGongBeiShu:%d\n",p/n);打印最小公倍数

main()
{
int
p,r,n,m,temp;
printf("Please
enter
2
numbers
n,m:");
scanf("%d,%d",&n,&m);//输入两个正整数.
if(n<m)//把大数放在n中,把小数放在m中.
{temp=n;
n=m;
m=temp;
}
p=n*m;//P是原来两个数n,m的乘积.
while(m!=0)//求两个数n,m的最大公约数.
{
r=n%m;
n=m;
m=r;
}
printf("Its
MAXGongYueShu:%d\n",n);//打印最大公约数.
printf("Its
MINGongBeiShu:%d\n",p/n);打印最小公倍数.
基本原理如下:
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
例如求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0。
1515和600的最大公约数是15。
两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。

求105和42的最小公倍数。
因为105和42的最大公约数是21,
105和42的积是4410,4410÷21=210,
所以,105和42的最小公倍数是210。

c语言编程求两个正整数的最大公约数和最小公倍数!
printf("Please enter 2 numbers n,m:");scanf("%d,%d",&n,&m);\/\/输入两个正整数.if(n<m)\/\/把大数放在n中,把小数放在m中.{temp=n;n=m;m=temp;} p=n*m;\/\/P是原来两个数n,m的乘积.while(m!=0)\/\/求两个数n,m的最大公约数.{ r=n%m;n=m;m=r;} printf("Its MAXGong...

在c语言中输入两个正整数m和n,求其最大公约数和最小倍数
{ int num1, num2, t, p;printf("请输入两个正整数:");scanf_s("%d,%d", &num1, &num2);p = num1*num2;while (t = num1%num2){ num1 = num2;num2 = t;} p = p \/ num2;printf("它们的最大公约数:%d\\n", num2);printf("它们的最小公倍数:%d\\n", p);system...

...从键盘输人两个正整数,计算两个数的最大公约数和最小公倍数?_百度...
if (temp % num1 == 0 && temp % num2 == 0) { lcm = temp;break;} temp++;} \/\/ 输出结果 printf("最大公约数为:%d\\n", gcd);printf("最小公倍数为:%d\\n", lcm);return 0;} 程序中,首先从键盘输入两个正整数,然后使用for循环计算它们的最大公约数。在for循环中,从1到...

计算两个正整数的最大公约数c语言
scanf("%d %d", &num1, &num2);result = gcd(num1, num2);printf("最大公约数为:%d\\n", result);return 0;} 计算两个正整数的最大公约数(Greatest Common Divisor,简称GCD)是数学中的一个经典问题。在C语言中,可以使用欧几里得算法(也称为辗转相除法)来计算两个数的最大公约数。...

编程程序计算两个正整数的最大公约数(GCD) 要求: (1)提示用户输入两个数...
&m);if(m<=0)printf("输入了非正整数!!!\\n请重新输入:");else break;} printf("请输入第2个正整数:");while(1){ scanf("%d",&n);if(n<=0)printf("输入了非正整数!!!\\n请重新输入:");else break;} printf("这两个正整数的公约数为:%d\\n",gcd(m,n));return 0;} ...

...程序(C语言):给出两个正整数,求他们的最大公约数和最小公倍数...
int gcd(int m,int n)\/\/最大公约数 { int t;if(m<n)t = n,n = m,m = t;if(n == 0) return m;else return gcd(n,m%n);} int lcm (int m,int n)\/\/最小公倍数 { return m*n\/gcd(m,n);} int main(){ int m,n;while(scanf("%d %d",&m,&n) == 2) { pr...

C语言编程:输入两个正整数m和n,求它们的最大公约数。
int GCD(int a,int b)\/\/定义函数,用来计算最大公约数 { return b==0?a:GCD(b,a%b);\/\/此处使用了递归,如果b=0,返回a为最大公约数,否则,一直以b与a%b赋给函数,实现辗转相除 } int main(){ int a, b ; \/\/定义实参a, b int answer ; \/\/定义最后结果 scanf ( "%d%d" , ...

通过程序设计求解两个整数的最大公约数
通过程序设计求解两个整数的最大公约数如下:1、辗转相除法 两整数a和b:a%b得余数c。若c=0,则b即为两数的最大公约数,结束。若c≠0,则a=b,b=c,再回去执行。2、相减法 两整数a和b:若a>b,则a=a-b。若a

编程实现,求两个正整数的最大公约数和最小公倍数
void main(void){ int m,n,t;cout<<"请输入两个正整数:"<<endl;cin>>m>>n;if(m<n){ t=m;m=n;n=t;} cout<<m<<"和"<<n<<"的最小公倍数是"<<invite(m,n)<<endl;cout<<m<<"和"<<n<<"的最大公约数是"<<multiple(m,n)<<endl;} int invite(int a,int b){ int...

C语言编程如何实现求两个整数的最大公约数?
在上述代码中,我们定义了一个名为gcd的函数,用于求解两个整数的最大公约数。该函数使用递归的方式实现欧几里得算法。在主函数中,我们首先从用户输入中读取两个整数,然后调用gcd函数计算它们的最大公约数,并将结果输出到控制台。♡♡ 有帮助到的话,麻烦采纳哦!♡♡...