求兩個整數
m和n之間的最大公因數(Greatest Common Divisor,GCD)可以使用輾轉相除法(也稱為歐幾裏得演算法)。這種方法基於一個事實:兩個整數的最大公因數等於其中較小數和兩數相除餘數的最大公因數。以下是一個使用非遞歸方式實現的gcd函數示例:
#include <stdio.h>
int gcd(int m, int n) {
while (n != 0) {
int temp = n;
n = m % n;
m = temp;
}
return m;
}
int main() {
int m, n;
printf("Enter two integers: ");
scanf("%d %d", &m, &n);
printf("The Greatest Common Divisor of %d and %d is %d.\n", m, n, gcd(m, n));
return 0;
}
在這個實現中,我們在一個while迴圈中不斷地將n賦值為m % n(m除以n的餘數),並將m賦值為n的舊值,直到n為0。在n變為0時,m就是兩個數的最大公因數。這個方法簡潔而有效,避免了遞歸可能引起的棧溢出問題,並且在計算大數的GCD時更為高效。