求一个数的所有公因数c语言,4种方法求2个数公因数

一、实验名称:求2个数的最大公约数

二、实验内容:利用辗转相除法、更相损减法、穷举法、Stein算法求两个数的最大公因数。并且比较这四种算法的运行时间。

三、算法设计和代码部分

1、辗转相除法

辗转相除法(又名欧几里德法)C语言中用于计算两个正整数a,b的最大公约数和最小公倍数,实质它依赖于下面的定理:

a b=0

gcd(a,b) =

gcd(b,a mod b) b!=0

其算法过程为: 前提:设两数为a,b设其中a 做被除数,b做除数,c为余数

1、大数放a中、小数放b中;

2、求a/b的余数;

3、若c=0则b为最大公约数;

4、如果c!=0则把b的值给a、c的值给a;

5、返回第二步;

代码:

#include

int main()

{

int a=0;

int b=0;

int c=0;

printf(“辗转相除法\n”);

printf(“请输入第一个数:\n”);

scanf("%d",&a);

printf(“请输入第二个数:\n”);

scanf("%d",&b);

while(a%b!=0)

{

c=a%b;

a=b;

b=c;

}

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

return 0;

}

辗转相除法算法流程图:

2、更相损减法

更相减损术,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。《九章算术》是中国古代的数学专著,其中的“更相减损术”可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”

翻译成现代语言如下:

第一步:任意给定两个


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部