中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C語言求最大公約數的方法有哪些

小億
194
2023-08-12 01:28:38
欄目: 編程語言

C語言求最大公約數的方法有以下幾種:

  1. 輾轉相除法:即用較大的數除以較小的數,然后用余數代替較大的數,再用較小的數除以余數,直到余數為0為止,此時較小的數即為最大公約數。
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a%b);
}
  1. 更相減損法:即用較大的數減去較小的數,然后用差值代替較大的數,再用較小的數減去差值,直到兩個數相等為止,此時相等的數即為最大公約數。
int gcd(int a, int b) {
if (a == b) {
return a;
}
if (a > b) {
return gcd(a-b, b);
}
return gcd(a, b-a);
}
  1. 移位法:當a和b都是偶數時,2是它們的公約數,然后將a和b都右移1位,再繼續求最大公約數,直到其中一個為0,此時另一個數即為最大公約數的2的冪倍。
int gcd(int a, int b) {
if (a == 0) {
return b;
}
if (b == 0) {
return a;
}
if ((a&1) == 0 && (b&1) == 0) {
return 2 * gcd(a>>1, b>>1);
}
if ((a&1) == 0) {
return gcd(a>>1, b);
}
if ((b&1) == 0) {
return gcd(a, b>>1);
}
if (a > b) {
return gcd(a-b, b);
}
return gcd(a, b-a);
}

這些方法都可以用于求兩個整數的最大公約數。

0
大荔县| 两当县| 扬中市| 视频| 香格里拉县| 红原县| 溆浦县| 南乐县| 宝兴县| 太仆寺旗| 浮山县| 普安县| 闻喜县| 年辖:市辖区| 冷水江市| 鹰潭市| 桃源县| 旺苍县| 璧山县| 雷山县| 杭锦旗| 平顺县| 伊春市| 宜州市| 天长市| 墨玉县| 堆龙德庆县| 濮阳市| 内江市| 呼伦贝尔市| 镇宁| 永吉县| 安吉县| 剑河县| 平湖市| 龙里县| 平阳县| 潮安县| 洪泽县| 芦溪县| 龙游县|