C语言【最大公约数和最小公倍数】的两种方法

合集下载

如何用c语言求最大公约数和最小公倍数

如何用c语言求最大公约数和最小公倍数

在这种方法里,先做除数的,后一步就成了被除数,这就是辗转相除法名字的来历吧。
int gcd( int n, int m )
{
if( m == 0 ) return n;
return gcd( m, n % m );
}
呵呵,够简单吧!
这个是辗转相除t a,b;
a=g_cd(m,n);
if (m>n) //最小公倍数=较大的数*(较小的数/最大公约数)
{
b=n;
b/=a;
return m*b;
}
else
{
b=m;
b/=a;
return n*b;
}
}
main()
}
else printf("Error!\n");
return 0;
}
★ 关于辗转相除法, 搜了一下, 在我国古代的《九章算术》中就有记载,现摘录如下:
约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”
其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法,实际上就是辗转相除法。
否则 n 为最大公约数
<2> 最小公倍数 = 两个数的积 / 最大公约数
#include
int main()
{
int m, n;
int m_cup, n_cup, res; /*被除数, 除数, 余数*/
printf("Enter two integer:\n");

用c语言表示两个数的最大公约数

用c语言表示两个数的最大公约数

用c语言表示两个数的最大公约数求最大公约数有时候我们需要求两个数的最大公约数,最常见的方法是利用辗转相除法来求解。

本文将以C语言来实现一个函数来求两个数的最大公约数,其实现步骤如下:1. 函数定义我们需要定义一个函数用来求两个数的最大公约数,该函数有两个参数,即要求公约数的两个数;函数的返回值是最大公约数,函数定义如下:unsigned int gcd(unsigned int a, unsigned int b)2. 算法实现辗转相除法是求最大公约数的常用算法,该算法主要基于以下的原理:(1) 如果a>b,那么a&b的最大公约数等于b与a除以b的余数的最大公约数;(2) 如果a<b,那么a&b的最大公约数等于a与b除以a的余数的最大公约数;(3) 如果a=b,那么a&b的最大公约数就等于a或b;根据以上的原理,我们可以得到下面的C语言实现:unsigned int gcd(unsigned int a, unsigned int b) {// 如果a为0,那么b就是最大公约数if( a == 0 )return b;// 如果b为0,那么a就是最大公约数if( b == 0 )return a;// 如果a>b,那么a&b的最大公约数等于b与a除以b的余数的最大公约数if( a>b )return gcd(b, a%b);// 如果b>a,那么a&b的最大公约数等于a与b除以a的余数的最大公约数if( a<b )return gcd(a, b%a);}3. 测试为了验证以上的函数正确性,我们可以编写一段代码来测试它的正确性:#include <stdio.h>int main(){int a, b, g;while(1){// 输入a和bscanf("%d %d", &a, &b);// 计算最大公约数g = gcd(a, b);printf("a=%d, b=%d, G=%d\n", a, b, g);}return 0;}结论以上就是本文使用C语言如何实现求两个数的最大公约数的步骤,这种方法是简单易行的,也能够得到正确的结果。

c语言 最小公倍数

c语言 最小公倍数

c语言最小公倍数
最小公倍数可以通过求两个数的最大公约数来得到。

最大公约数可以用欧几里得算法求解。

具体步骤如下:
1. 定义一个函数,输入两个整数a和b。

2. 在函数内部,使用循环来计算a和b的最大公约数。

3. 使用欧几里得算法,不断用b去除a,将余数赋值给b,直到余数为0,此时的b就是a和b的最大公约数。

4. 最小公倍数等于两个数的乘积除以最大公约数。

5. 在主函数中,输入两个整数,调用最小公倍数函数并打印结果。

示例代码如下:
```c
#include <stdio.h>
// 求最大公约数
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 求最小公倍数
int lcm(int a, int b) {
int gcd_num = gcd(a, b);
return (a * b) / gcd_num;
}
int main() {
int num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
int result = lcm(num1, num2);
printf("最小公倍数为:%d\n", result);
return 0;
}
```
以上代码可以求出输入的两个整数的最小公倍数。

【C语言】第七章作业

【C语言】第七章作业
修改源程序,把primer函数的定义放在main函数 之后,编译程。出现什么问题?如何修改?
如果要求输出100~200之间的素数,如何修改 main函数。
3.main函数实现
int main() { int i;
printf("100~200之间的素数有:"); for(i=100;i<=200;i++) if (primer(i)) printf("%d ",i);
{ printf("请输入一个大于2的整数:"); scanf("%d",&m);
} flag=primer(m); if (flag) printf("%d是素数。\n",m); else printf("%d不是素数。\n",m); return 0; }
3.运行程序
输入测试数据:17 输入测试数据:34 输入测试数据:2 输入测试数据:1 输入测试数据:0 分别测试程序的正确性。
convert(i); }运行结果是什么?
最小公倍数=(i*j)/最大公约数
1.最大公约数函数实现
int gongyue(int i,int j) { int t,r; if (j>i)
{t=i;i=j;j=t;} while( (r=i%j)!=0) {
i=j; j=r; } return(j); }
1.最小公倍数函数实现
int gongbei(int i,int j,int h) { return(i*j/h); }
9.运行程序
输入测试数据: I am No.201002,You are No.201003! 检测程序的正确性。 正确结果: 字母个数是:13 数字个数是:12 空格个数是:4 其它字符个数是:4

求最大公因数和最小公倍数的方法c语言

求最大公因数和最小公倍数的方法c语言

求最大公因数和最小公倍数的方法c 语言
最大公因数和最小公倍数是一个重要的数学概念,用于求解两个或多个整数的最大公因数和最小公倍数。

c语言提供了许多常用的方法来计算它们。

其中一种方法是辗转相除法。

辗转相除法是一种用于求解最大公因数的迭代算法,它可以利用两个数字的余数来计算最大公因数。

c语言的实现:给定两个整数a和b,我们可以先将它们大小比较,将较大的整数与较小的整数相除,得到余数r1;然后将较小的数和余数r1相除,得到新的余数r2;依次重复上述步骤,直到余数是0为止,这时最大公因数就是较小的那个被整除的数。

随后可以得到最小公倍数,它是两个整数的乘积除以它们的最大公因数。

在c 语言中,我们可以定义一个变量存储最大公因数,定义一个变量存储两个整数的乘积,然后利用这两个变量来求解最小公倍数。

通过上述介绍,可以知道如何使用辗转相除法运用c程序求最大公因数和最小公倍数的步骤。

掌握此算法的能力可以帮助我们在日常生活中更好地处理各种复杂的问题,从而扩展我们的数学思维和计算能力。

c语言输出最大公约数和最小公倍数

c语言输出最大公约数和最小公倍数

《C 语言输出最大公约数和最小公倍数》在 C 语言编程中,计算最大公约数和最小公倍数是非常常见的需求之一。

它们是数学中的基本概念,对于计算机科学以及实际问题中都具有重要的意义。

本文将深入探讨如何在 C 语言中输出最大公约数和最小公倍数,并结合实际问题进行分析和应用。

## 1. 最大公约数让我们明确最大公约数的定义。

最大公约数,英文为 Greatest Common Divisor,通常缩写为 GCD,是两个整数的共同约数中最大的一个。

在 C 语言中,我们可以使用欧几里得算法来高效地计算两个数的最大公约数。

欧几里得算法的基本思想是通过不断取余的方式,直到余数为 0,那么除数就是最大公约数。

以下是 C 语言中计算最大公约数的代码示例:```cint gcd(int a, int b) {if (b == 0) {return a;} else {return gcd(b, a % b);}}```在上述代码中,我们定义了一个名为 `gcd` 的函数,它接收两个整数参数 `a` 和 `b`,然后通过递归调用自身来计算最大公约数。

这种递归的实现思路非常巧妙,而且在实际的程序中也能够高效地运行。

## 2. 最小公倍数接下来,让我们来讨论最小公倍数。

最小公倍数,英文为 Least Common Multiple,通常缩写为 LCM,是两个整数的共同倍数中最小的一个。

在C 语言中,我们可以通过最大公约数来计算最小公倍数,因为有一个基本的性质:两个整数的最大公约数与它们的最小公倍数的乘积等于这两个整数的乘积。

以下是 C 语言中计算最小公倍数的代码示例:```cint lcm(int a, int b) {return a / gcd(a, b) * b;}```在上述代码中,我们定义了一个名为 `lcm` 的函数,用来计算两个整数的最小公倍数。

通过调用之前我们定义的 `gcd` 函数,可以非常方便地实现对最小公倍数的计算。

c语言程序设计-求两个数最大公约数

c语言程序设计-求两个数最大公约数

1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数, 并输出结果。

这两个数由键盘输入。

程序设计:#include<stdio.h>int hcf(int x,int y){int t;if(xvy){t=x;x=y;y=t;} while((t=x%y)!=0){x=y;y=t;}return y;} int lcf(int x,int y,int m){return x*y/m;}int main(){int hcf(int,int);int lcf(int,int,int);int x,y,h,l;printf("请输入两个数:"); scanf("%d%d",&x,& y);h=hcf(x,y);l=lcf(x,y,h);printf("最大公约数为:h=%d\n最小公倍数为:l=%d\n",h,l); return 0; }运行结果:2求方程ax A2+bx+c=0的根,用3个函数分别求当:b A2-4ac大于0、等于0和小于0时的根并输出结果。

从主函数输入a,b, c的值。

程序设计:#include<stdio.h>#include<math.h>void g_two(double a,double b,double c) {double x1,x2;x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf("方程的两个根为:x仁%f\nx2=%f\n",x1,x2); }void g_one(double a,double b,double c){double x;x=(-b)/(2*a);printf("方程的两个根为:x1=x2=%f\n",x);}void g_zone(double a,double b,double c){printf("无解\n");}void main(){void g_two(double,double,double);void g_one(double,double,double);void g_zone(double,double,double); double a,b,c,t;printf("请输入a、b、c 的值:"); scanf("%lf%lf%lf", &a,&b,& c); t=b*b-4*a*c;if(t>0)g_two(a,b,c);else if(t==0)g_one(a,b,c);elseg_zone(a,b,c);}运行结果:3.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。

【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数

【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数

【C语⾔】写⼀个函数,并调⽤该函数求两个整数的最⼤公约数和最⼩公倍数程序分析:
在数学中,两个数的最⼩公倍数=两个数的乘积/两数的最⼤公约数。

求两个数的最⼤公约数,运⽤辗转相除法:已知两个整数M和N,假定M>N,则求M%N。

如果余数为0,则N即为所求;如果余数不为0,⽤N除,再求其余数。

直到余数为0,则除数就是M和N的最⼤公约数代码:
#include<stdio.h>
int gcd(int a, int b)/*求最⼤公约数*/
{
int r, t;
if(a<b)
{
t = a;
a = b;
b = t;
}
r = a % b;
while(r != 0)/*辗转相除法*/
{
a = b;
b = r;
r = a % b;
}
return b;
}
int lcm(int a, int b)/*求最⼩公倍数*/
{
int r;
r = gcd(a, b);
return(a * b / r);
}
int main()
{
int x, y;
printf("请输⼊两个整数:\n");
scanf_s("%d %d", &x, &y);
printf("两个整数最⼤公约数为:%d\n", gcd(x, y));
printf("两个数最⼩公倍数为:%d\n", lcm(x, y));
return 0;
}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言【最大公约数和最小公倍数】的两种方法
By Minecig
1.
//第一种是比较麻烦的方法,着重看加粗的函数实现部分:#include <stdio.h>
int main()
{
int yue(int m,int n);
int bei(int m,int n);
int gy,gb,i,j,l;
printf("请输入两个整数:\n");
scanf("%d %d",&i,&j);
if (i<j) {l=i; i=j; j=l;}
gy=yue(i,j);
gb=bei(i,j);
printf("最大公约数:%d\n",gy);
printf("最小公倍数:%d\n",gb);
return 0;
}
int yue(int m,int n)
{
int i,t;
if(m<n)
{
i=m;m=n;n=i;
}
for(i=n;i>=1;i--)
{
if(m%i==0&&n%i==0)
return i;
}
}
int bei(int m,int n)
{
int i,t;
if(m<n)
{
t=m;m=n;n=t;
}
for(i=m;i<=m*n;i++)
{
if(i%m==0&&i%n==0)
return i;
}
}
2:
//这种函数算法要好的多,利用了“辗转相除法”和“最小公倍数=x*y/最大公约数" 的算法#include <stdio.h>
int main()
{
int yue(int m,int n);
int bei(int m,int n,int gy);
int gy,gb,i,j,l;
printf("请输入两个整数:\n");
scanf("%d %d",&i,&j);
if (i<j) {l=i; i=j; j=l;}
gy=yue(i,j);
gb=bei(i,j,gy);
printf("最大公约数:%d\n",gy);
printf("最小公倍数:%d\n",gb);
return 0;
}
int yue(int m,int n)
{
int l;
l=m%n;
if (l==0) return(n);
else yue(n,l);
}
int bei(int i,int j,int gy)
{
int l;
l=i*j/gy;
return(l);
}
/*番外:两个数x和y,最大公约数是z的话,那么最小公倍数=x*y/z */。

相关文档
最新文档