C语言编程:输入两个正整数,输出其中最大公约数和最小公倍数。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程:输入两个正整数,输出其中最大公约数和最小公倍数。相关的知识,希望对你有一定的参考价值。
1. 求p和q的最大公约数的欧几里德算法:
(1)输入p和q(p>q)
(2)计算p和q的余数r
(3)r=0时,q即为最大公约数,转第(4)步
否则,令p=q,q=r,继续执行第(2)步
(4)输出q
2. p和q的最小公倍数为p乘以q再除以它们的最大公约数。
如输入:
15,25
则输出:
最大公约数是5
最小公倍数是75
#include<stdio.h>
int main()
int a,b,num1,num2,temp;
printf("please input two number:\\n");
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\\n",a);
printf("gongbeishu:%d\\n",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<iostream>
using namespace std;
int main()
int m,n,k,l,q;
cout<<"请输入m,n的值:";
cin>>m>>n;
if(n<m)
k=m;
m=n;
n=k;
q=n*m;
while(m!=0)
l=n%m;
n=m;
m=l;
cout<<"最大公约数为:"<<n<<endl;
cout<<"最小公倍数为:"<<q/n<<endl;
system("pause");
return 0;
扩展资料:
#include是个包含命令,就是把iostream.h这个文件里的内容复制到这个地方
ostream.h是input output stream的简写,意思为标准的输入输出流头文件。它包含:
(1)cin>>"要输入的内容"
(2)cout<<"要输出的内容"
这两个输入输出的方法需要#include<iostream.h>来声明头文件。
iostream.h与iostream是不同的。
#include<iostream.h>是在旧的标准C++中使用。在新标准中,用#include<iostream>。iostream的意思是输入输出流。
#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。还要注意的是:在VS编程时要添加:
using namespace std;
其原因是:后缀为.h的头文件C++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,C++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
参考技术B代码如下:
//有问题可以QQ联系我: 1609299076#include <stdio.h>
int main()
int m, n, p, tmp;
printf("请输入两个正整数:\\n");
scanf("%d %d", &m, &n);
p = m * n;
while (n != 0)
tmp = m % n;
m = n;
n = tmp;
printf("最大公约数: %d\\n", m);
printf("最小公倍数: %d\\n", p / m);
return 0;
运行截图:
本回答被提问者采纳c语言:输入两个正整数m和n,求其最大公约数和最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数。
解:程序:
#include <stdio.h>
int main()
{
int num1, num2, t,p;
printf("请输入两个正整数:");
scanf("%d,%d", &num1, &num2);//7,8
p = num1*num2;
while (t = num1%num2)//7 1 0,循环结束
{
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
请按任意键继续. . .
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1742297
以上是关于C语言编程:输入两个正整数,输出其中最大公约数和最小公倍数。的主要内容,如果未能解决你的问题,请参考以下文章
用C语言编程:判断输入的正整数是不是既是3又是5的整数倍,若是则输出yes,否则输出no
c语言:计算并输出n,其中n是从键盘上输入的一个不大于10的正整数