溫馨提示×

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

小億
260
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女