91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
松滋市| 永昌县| 峨边| 湛江市| 甘洛县| 当涂县| 信丰县| 青浦区| 望都县| 株洲市| 区。| 尖扎县| 饶平县| 昭通市| 西峡县| 鄂温| 静安区| 井冈山市| 亚东县| 航空| 景东| 宜春市| 萝北县| 开原市| 修武县| 集安市| 通榆县| 武安市| 太保市| 加查县| 罗定市| 扬州市| 兴安盟| 武胜县| 巴彦县| 潞西市| 南康市| 寿阳县| 永顺县| 海兴县| 兴化市|