1. 从键盘输入两个正整数,求其最小公倍数,编程
用欧几里德算法,最经典的了
#include
#include
main()
{
int
p0,q0;
printf("输入两个正整数:");
scanf("%d%d",&p0,&q0);
int
p=min(p0,q0),q=max(p0,q0);//min(),max()自己写吧
int
r=p;
while(p%q!=0)
p+=r;
printf("最小公倍数为:%d",p);
}
2. C语言编程中最小公倍数怎么求
思想:输入的两个数,大数m是小数n的倍数,那么大数m即为所求的最小公倍数;若大数m不能被小数n整除则需要寻找一个能同时被两数整除的自然数。
从大数m开始依次向后递增直到找到第一个能同时被两数整除的数为止,所以循环变量i的初值为寻找第一个能同时被两整数整除的自然数,并将其输出。需要注意的是,在找到第一个满足条件的i值后,循环没必要继续下去,所以用break来结束循环。
#include<stdio.h>
int main()
{
int m, n, temp, i;
printf("Input m & n:");
scanf("%d%d", &m, &n);
if(m<n) /*比较大小,使得m中存储大数,n中存储小数*/
{
temp = m;
m = n;
n = temp;
}
for(i=m; i>0; i++) /*从大数开始寻找满足条件的自然数*/
if(i%m==0 && i%n==0)
{/*输出满足条件的自然数并结束循环*/
printf("The LCW of %d and %d is: %d ", m, n, i);
break;
}
return 0;
}
(2)编程求两个数最小公倍数扩展阅读:
c语言书写规则:
1、一个说明或一个语句占一行。
2、用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。
3、低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。
网络-c语言
3. c语言编程求输入两个数的最大公约数和最小公倍数,怎么做
输入两个正整数m和n,求其最大公约数和最小公倍数.用辗转相除法求最大公约数 算法描述:m对n求余为a,若a不等于0 则 m 0)
{
m_cup = m;
#include<stdio.h>
voidmain()
{
intm,n,m1,n1,t;
printf("请输入两个数(用空格隔开):");
scanf("%d%d",&m,&n);
if(n>m)
{
t=m;
m=n;
n=t;
}
m1=m;
n1=n;
while(n!=0)
{
t=m%n;
m=n;
n=t;
}
printf("%d和%d的最大公约数是:%d
",m1,n1,m);
printf("最小公倍数是:%d
",m1*n1/m);
}
4. 用VB编程:求两个整数的最小公倍数。
没太多的时间修改,给你个例子:
方法简述:最小公倍数等于两个正整数相乘再除以两个正整数的最大公约数(即a*b/g)。说明求两个正整数最大公约数,自己查找。
vb程序代码如下:
Private
Sub
Command1_Click()
Dim
m
As
Integer,
n
As
Integer
Dim
g
As
Integer
dim
t1
as
integer,t2
as
integer
m
=
InputBox("第一个数")
n
=
InputBox("第二个数")
t1=m
't1,t2是临时变量
t2=n
g
=
IIf(m
<
n,
m,
n)
Do
While
g
>
1
If
m
Mod
g
=
0
And
n
Mod
g
=
0
Then
Exit
Do
g
=
g
-
1
Loop
Print
m
&
"与"
&
n
&
"的最小公倍数为:"
&
(t1*t2)/g
End
Sub
5. c语言编程,求两个数的最大公约数和最小公倍数
这样写:
#include
void
main()
{
int
m,n,i,r,temp;
printf("请输入第一个数的值:
");
scanf("%d",&m);
printf("请输入第二个数的值:
");
scanf("%d",&n);
if(n>m)
{
temp=m;
m=n;
n=temp;
}
i=n;
while(i%m!=0)
{
i=i+n;
}
printf("最小公倍数是:%d
\n",i);
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("最大公约数是:%d
\n",n);
}
图:
6. C语言编程中,求两个数的最大公约数和最小公倍数算法是怎样的
#include
main()
{
int
m,n,r;
printf("请输入两个数字:");
scanf("%d%d",&m,&n);
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("两个数字的最大公约数为%d\n",n);
getch();
}
这个算法就是把你初中算最大公约数的过程给程序化了。。你用以前的方法在纸上算算最大公约数
再对照WHILE里面的算法
就能明白咋回事了。。
7. C语言编程:输入两个正整数,输出其中最大公约数和最小公倍数。
#include<stdio.h>
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);
}
(7)编程求两个数最小公倍数扩展阅读:
此题使用的是欧几里德算法,又称辗除法。
只要可计算余数都可用辗转相除法来求最大公因子,包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。
辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。
利用辗转相除法方法,可以较快地求出两个自然数的最大公因数,即gcd 或叫做HCF 。
最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf)
所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作gcd(8,12)=4。
网络-辗除法
8. 用c程序编程,求两个正整数的最小公倍数。
#include<stdio.h>
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
inttemp;
if(a>b){temp=a;a=b;b=temp;}//保证a是较小的那个数
for(inti=a;i>=0;i--)
if(a%i==0&&b%i==0)//求最大公约数
{
temp=i;
break;
}
printf("%d ",a*b/temp);//输出最小公倍数
}
9. c语言编程:从键盘输入两个数,求它们的最小公倍数
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。
10. C语言中,求两个数的最小公倍数,的“高效”算法是
这思路我自己想的,但是我也说不太明白,反正我知道怎么回事
1先判断大数%小数是不是0,是0那么大数就是最小公倍数
2不是的话,让大数%小数得到一个数,让小数%得到的数,如果得0
那么让大数*(小数/(大数%小数)),得到得数是最小公倍数
3如果2中小数%得到的这个数不等于0,那么恭喜你,这两个数的最小公倍数就是:大数*小数
4如果这两个数相等,那么,随便一个都是最小公倍数
纯手打,今天刚好做这个题,看到网上没什么答案,我就写写我的思路
C++语法如下:
int pd(int A,int B);
int main() {int i, k;goto C;
C: {
printf("第一个数:"); scanf("%d", &i);
printf("第二个数:"); scanf("%d", &k);
printf("这两个数的公倍数为:%d\n\n", pd(i, k));
goto C; }
return 0;
}
int pd(int A, int B) {
int P;
if (A > B) {
if (A%B == 0) { P = A; }
else if (B % (A%B) == 0) { P = A*(B / (A%B)); }
else { P = A*B; }
}
else if (B > A) {
if (B%A == 0) { P = B; }
else if (A % (B%A) == 0) { P = B*(A / (B%A)); }
else { P = B*A; }
}
else { P = A; }
return P;
}