亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
弥勒县| 桂平市| 阳信县| 台中市| 江城| 青神县| 彭山县| 奉贤区| 沧源| 岱山县| 尼玛县| 穆棱市| 石棉县| 印江| 阜新市| 湘乡市| 施甸县| 虹口区| 罗山县| 河南省| 庆云县| 鸡东县| 曲阳县| 衡水市| 永清县| 彰化县| 合作市| 麻栗坡县| 涟源市| 湘乡市| 富锦市| 高雄市| 博白县| 潞城市| 泸定县| 龙南县| 裕民县| 汤阴县| 沁源县| 商城县| 高要市|