A. c语言求最大公约数和最小公倍数
c语言求最大公约数和最小公倍数,回答如下:
在做C语言相关练习的时候,会遇见比较经典的一道题型,就是求最大公约数或者最小公倍数。那么先普及一下什么是最大公约数和最大公倍数:
最大公约数:指能够整除多个整数的最大正整数。例如8和12的最大公约数为4。
最小公倍数:两个或多个整数最小的公共倍数。例如6和24的最小公倍数为24。
2.辗转相除法
辗转相除法是用来求最大公约数的,同时最小公倍数满足这样一条数学性质:两数之积除以最大公约数即为最小公倍数.所以用辗转相除法是可以间接求最小公倍数的。
辗转相除法的大概思路:用两数相除,如果余数为零即为所求,如果余数不为零,上空渗笑一轮相除所得的余数为除数,同时上一轮的除数现在成为被斗含除数,直到余数为零不再相除,此时的除数即为所求。
B. 如何用C语言求最小公倍数。。。
主要是辗转相除法。
方法一、不设函数
#include
<stdio.h>
int
main
()
{int
p,r,n,m,temp;
printf("please
enter
two
positive
integer
numbers
n,m:");
scanf("%d
%d",&n,&m);
if
(n<m)
{temp=n;
n=m;
m=temp;
//把大数放在n中,
小数放在m中
}
p=n*m;
//先将n和m的乘积保存在p中,
以便求最小公倍数时用
while
(m!=0)
//求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n);
//
p是原来两个整数的乘积
return
0;
}
方法二、调用函数
#include
<stdio.h>
int
main
()
{int
p,r,n,m,temp;
printf("please
enter
two
positive
integer
numbers
n,m:");
scanf("%d
%d",&n,&m);
if
(n<m)
{temp=n;
n=m;
m=temp;
//把大数放在n中,
小数放在m中
}
p=n*m;
//先将n和m的乘积保存在p中,
以便求最小公倍数时用
while
(m!=0)
//求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n);
//
p是原来两个整数的乘积
return
0;
}
C. C语言编程,求最小公倍数。
1、首先介绍一下求最小公倍数的经典方法:
辗转相除法
有两整数a和b:
①a%b得余数c
②若c=0,则b即为两数的最大公约数
③若c≠0,则a=b,b=c,再回去执行①
a*b除以最大公约数等于最小公倍数
2、因此原问题也化为最小公倍数和最大公约数一起求了。程序的算法如下:
#include<stdio.h>
int lowest_common_multiple(int m,int n);
int main()
{
int m,n,c;
printf("请输入m的值: ");
scanf("%d",&m);
printf("请输入n的值: ");
scanf("%d",&n);
c=lowest_common_multiple( m, n);
printf("请输出最小公倍数c的值: ");
printf("%d ",c);
return 0;
}
int lowest_common_multiple(int m,int n)
{
int remainder,m1,n1;
m1=m;
n1=n;
while (n != 0) {
remainder = m % n;
m = n;
n = remainder;
}
//printf("输出最大公约数m: %d ", m); //此时的m为最大公约数
return m1*n1/m;
}
3、程序的输出如下:
4、此题注释的哪一个是输出最大公约数的。