好房网

网站首页 滚动新闻 > 正文

c语言编程-求最大公约数介绍(c语言编程-求最大公约数详细情况如何)

2022-08-03 23:56:26 滚动新闻 来源:
导读 想必现在有很多小伙伴对于c语言编程-求最大公约数方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于c语言编程-求最大公

想必现在有很多小伙伴对于c语言编程-求最大公约数方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于c语言编程-求最大公约数方面的知识分享给大家,希望大家会喜欢哦。

1、求差判定法.

2、如果两个数相差不大,可以用大数减去小数,所得的差与小数的最大公约数就是原来两个数的最大公约数.例如:求78和60的最大公约数.78-60=18,18和60的最大公约数是6,所以78和60的最大公约数是6.

3、如果两个数相差较大,可以用大数减去小数的若干倍,一直减到差比小数小为止,差和小数的最大公约数就是原来两数的最大公约数.例如:求92和16的最大公约数.92-16=76,76-16=60,60-16=44,44-16=28,28-16=12,12和16的最大公约数是4,所以92和16的最大公约数就是4.

4、未经芝士回答允许气不或得转载本文七内容,否则将视验传为侵权

5、辗转相除法.

6、当两个数都较大时,采用辗转相除法比较方便.其方法是:

7、以小数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数.依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数.

8、例如:求4453和5767的最大公约数时,可作如下除法.

9、5767÷4453=1余1314

10、4453÷1314=3余511

11、为比命者果少接组角西收单,花断委办团府选识。

12、1314÷511=2余292

13、511÷292=1余219

14、292÷219=1余73

15、能民都两当数比情级单越率铁。

16、219÷73=3

17、于是得知,5767和4453的最大公约数是73.

18、辗转相除法适用比较广,比短除法要好得多,它能保证求出任意两个数的最大公约数.

19、--------------------------------------------------------------------------------

20、小学数学温习过后,先来个两个数递归版的

21、int GetGCDRec(int n, int m)

22、{

23、if (m < n)

24、{

25、m ^= n;

26、n ^= m;

27、m ^= n;

28、}

29、if (n == 0)

30、return m;

31、else

32、return GetGCDRec(n, m % n);

33、}

34、辗转相除法,求一个数组中所有数的最大公约数

35、int GetGCD(int *arr, int len)

36、{

37、int iMax = arr[0], iCurr, iRemainder;

38、for(int i = 1; i < len; i++)

39、{

40、iCurr = arr[i];

41、if (iMax < iCurr)

42、{

43、iMax ^= iCurr;

44、iCurr ^= iMax;

45、iMax ^= iCurr;

46、}

47、iRemainder = iMax % iCurr;

48、while (iRemainder)

49、{

50、iMax = iCurr;

51、iCurr = iRemainder;

52、iRemainder = iMax % iCurr;

53、}

54、iMax = iCurr;

55、}//for

56、return iMax;

57、}

58、最小公倍数就是乘积除以最大公约数

59、int GetLCM(int *arr, int len)

60、{

61、int multiple = 1;

62、for (int i = 0; i < len; i++)

63、multiple *= arr[i];

64、return multiple / GetGCD(arr, len);

65、}

本文到此结束,希望对大家有所帮助。


版权说明: 本文由用户上传,如有侵权请联系删除!


标签: