C语言辗转相除法求最大公约数(如何用C语言求两个数的最大公约数的三种算法)

2024-05-15 17:10:10 :44

c语言辗转相除法求最大公约数(如何用C语言求两个数的最大公约数的三种算法)

各位老铁们好,相信很多人对c语言辗转相除法求最大公约数都不是特别的了解,因此呢,今天就来为大家分享下关于c语言辗转相除法求最大公约数以及如何用C语言求两个数的最大公约数的三种算法的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

如何用C语言求两个数的最大公约数的三种算法

1、相减法

#include《stdio.h》

int main()

{

int a,b;

int c=0;//计数器

while(1)//循环判断的作用

{

printf("输入两个数字求最大公约数:");

scanf("%d%d",&a,&b);

while(a!=b)

{

if(a》b)

a=a-b;

else

b=b-a;

c++;

}

printf("最大公约数是:%d\n",a);

printf("%d\n",c);

}

return 0;

}

运行效果:

2、辗转相除法:

#include《stdio.h》

int a,b,temp;

int Division(){

printf("请输入两个数(a,b):\n");

scanf("%d,%d",&a,&b);

if(a《b){

temp=a;

a=b;

b=temp;

}

while(a%b!=0){

temp=a%b;

a=b;

b=temp;

}

printf("最大公约数为:%d\n",b);

return 0;

}

3、穷举法

#include《stdio.h》

int main()

{

int a,b,c;

int d=0;//计数器

while(1)

{

printf("输入两个数字求最大公约数:");

scanf("%d%d",&a,&b);

c=(a》b)?b:a;//三目运算符

while(a%c!=0||b%c!=0)

{

c--;

d++;

}

printf("最大公约数是:%d\n",c);

printf("%d\n",d);

}

return 0;

}

C语言程序设计如何求最大公约数

最大公约数算法:

(1)辗转相除法

两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数,结束

③ 若c≠0,则a=b,b=c,再回去执行①

(2)相减法

两整数a和b:

① 若a》b,则a=a-b

② 若a《b,则b=b-a

③ 若a=b,则a(或b)即为两数的最大公约数,结束

④ 若a≠b,则再回去执行①

(3)穷举法:

① i= a b中的小数

② 若a,b能同时被i整除,则i即为最大公约数,结束

③ i--,再回去执行②

编程一个C语言程序,输入两个数,采用辗转相除法来计算最大公约数

#include《stdio.h》

#include《stdlib.h》

intmain()

{

inta,b,r;

scanf("%d%d",&a,&b);

while(b!=0)//当其中一个数为0,另一个数就是两数的最大公约数

{

r=a%b;

a=b;

b=r;

}

printf("最大公约数%d\n",a);

system("pause");

}

扩展资料

C语言求两个数的最大公约数辗转相减法

#include《stdio.h》

intmain()

{

inta=0;//a、b都是某个数的整数倍

intb=0;

printf("pleaseEnter2datas:");

scanf("%d%d",&a,&b);

while(a*b!=0),//a或者b不能为0

{

if(a》b)

{

a=a%b;//将余数赋给最大值,其余数某个数的整数倍

}

else

{

b=b%a;

}

printf("%d\n",a=0?b:a);

return0;

}

}

编写程序 求两个整数的最大公约数 括号辗转相除法 例如定义a=60 b=36

以下是一个使用辗转相除法求两个整数最大公约数的C程序。在这个例子中,我们使用了给定的整数a=60和b=36。辗转相除法是一种通过循环求余数直到余数为0的算法。#include 《stdio.h》int gcd(int a, int b) {int temp;while (b != 0) {temp = a % b;a = b;b = temp;}return a;}int main() {int a = 60;int b = 36;int result = gcd(a, b);printf("最大公约数为:%d\n", result);return 0;}将以上代码粘贴到C编译器中并运行,您将获得两个整数60和36的最大公约数,结果应该是12。

C语言程序设计:用辗转相除法求两个整数的最大公约数

#include《stdio.h》int gcd(int n,int m){  /**********Program**********/int t;if ( m》n ){t=m;m=n;n=t;}t=n%m;while (t){n=m;m=t;t=n%m ;}return m;/**********  End  **********/}

c语言求两个数的最大公约数

思路:求两个数的最大公约数使用辗转相除法。辗转相除法,又名欧几里德算法(Euclideanalgorithm)乃求两个正整数之最大公因子的算法。原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。参考代码:#include 《stdio.h》int main(){  int x,y,z;    scanf("%d%d",&x,&y);  while(x!=0)  {  z=x%y;  x=y;  y=z;  }  printf("%d\n",z);return 0;}/*运行结果:6 273*/

求最大公约数的简便方法

求最大公约数的简便方法如下:

1、辗转相除法(欧几里德法)C语言中用于计算两个正整数a,b的最大公约数,采用函数嵌套调用形式进行求两个数的最大公约数。其算法过程为:

前提:设两数为a,b设其中a做被除数,b做除数,temp为余数;Steps:大数放a中,小数放b中;求a/b的余数;若temp=0则b为最大公约数。如果temp!=0则把b的值给a,temp的值给a。

2、穷举法(枚举法)

从两个数中较小数开始由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数。

3、更相减损法

Steps:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。

以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。

4、Stein算法

性质:gcd(kx,ky)=k*gcd(x,y)。

对两个正整数 x》y。

均为偶数gcd(x,y)=2gcd(x/2,y/2)。

均为奇数gcd(x,y)=gcd((x+y)/2,(x-y)/2)。

X奇y偶gcd(x,y)=gcd(x-y)/2)。

X偶y奇gcd(x,y)=gcd(x/2,y)。

或gcd(x,y)=gcd(y,x/2)。

求最大公约数c语言

c语言求最大公约数有辗转相除法、更相减损术、穷举法三种。

辗转相除法。算法简介:将两个数a,b相除,如果余数c不等于0,就把b的值给a,c的值给b,直到c等于0,此时最大公约数就是b。

更相减损术。算法简介:将两个数中较大的数a减去较小的数b,如果差c等于0,那么最大公约数为b,如果不等于0,则将b的值给a,c的值给b,继续相减直到差等于0。

穷举法。算法简介:将两个数a,b中较小的值赋给i,将a除以i,b也除以i,若两者的余数同时为0时,此时的i就是两者的最大公约数。若不等于0,则将i-1,继续将a除以i,b除以i,直至余数同时为0。

最大公约数:

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。

早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法——辗转相除法。辗转相除法使用到的原理很聪明也很简单,假设用f(x,y)表示x,y的最大公约数,取k=x/y,b =x%y,则x=ky+ b,如果一个数能够同时整除x和y,则必能同时整除b和y。

而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x,y)=f(y,x%y)(y》0),如此便可把原问题转化为求两个更小数的最大公约数,直到其中一个数为0,剩下的另外一个数就是两者最大的公约数。

C语言程序:用“辗转相除法”求两个正整数的最大公约数(程序填空)

#define _CRT_SECURE_NO_WARNINGS

#include 《stdio.h》

#include 《stdlib.h》

int main()

{

int a, b,r;

scanf("%d %d", &a, &b);

while (b != 0)//当其中一个数为0,另一个数就是两数的最大公约数

{

r = a%b;

a = b;

b = r;

}

printf("最大公约数%d\n", a);

system("pause");

}

例子:

105252

252%105=42;

105%42=21;

42%21=0;

即21为105与252的最大公约数

扩展资料:

while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:

一、在while语句中设定条件语句,条件不满足,则循环自动停止。

如:只输出3的倍数的循环;可以设置范围为:0到20。

二、在循环结构中加入流程控制语句,可以使用户退出循环。

1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。

2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。

如果你还想了解更多这方面的信息,记得收藏关注本站。

c语言辗转相除法求最大公约数(如何用C语言求两个数的最大公约数的三种算法)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.