使用循環(huán)和決策語(yǔ)句以不同方式計(jì)算兩個(gè)整數(shù)(正整數(shù)和負(fù)整數(shù))的最大公因數(shù)的示例。
要理解此示例,您應(yīng)該了解以下C語(yǔ)言編程主題:
兩個(gè)整數(shù)的HCF或GCD(最大公因數(shù))是可以精確地將兩個(gè)數(shù)相除(沒(méi)有余數(shù))的最大整數(shù)。
在C編程中,有很多方法可以找到最大公約數(shù)。
#include <stdio.h> int main() { int n1, n2, i, gcd; printf("輸入兩個(gè)整數(shù): "); scanf("%d %d", &n1, &n2); for(i=1; i <= n1 && i <= n2; ++i) { // 檢查i是否是兩個(gè)整數(shù)的因數(shù) if(n1%i==0 && n2%i==0) gcd= i; } printf("G.C.D of %d and %d is %d", n1, n2, gcd); return 0; }
在這個(gè)程序中,用戶輸入的兩個(gè)整數(shù)存儲(chǔ)在變量n1和n2中。然后循環(huán)for,直到i小于n1和n2。
在每次迭代中,如果n1和n2都可以被i整除,則將i的值分配給gcd。
當(dāng)for循環(huán)完成時(shí),兩個(gè)數(shù)的最大公約數(shù)被存儲(chǔ)在變量gcd中。
#include <stdio.h> int main() { int n1, n2; printf("輸入兩個(gè)正整數(shù): "); scanf("%d %d",&n1,&n2); while(n1!=n2) { if(n1 > n2) n1 -= n2; else n2 -= n1; } printf("最大公因數(shù) = %d",n1); return 0; }
輸出結(jié)果
輸入兩個(gè)正整數(shù): 81 153 最大公因數(shù) = 9
這是找到最大公因數(shù)的更好方法。在此方法中,從較大的整數(shù)中減去較小的整數(shù),然后將結(jié)果分配給保存較大整數(shù)的變量。這個(gè)過(guò)程一直持續(xù)到n1和n2相等。
僅當(dāng)用戶輸入正整數(shù)時(shí),以上兩個(gè)程序才能按預(yù)期工作。這是第二個(gè)示例的一些修改,可以找到正整數(shù)和負(fù)整數(shù)的最大公因數(shù)。
#include <stdio.h> int main() { int n1, n2; printf("輸入兩個(gè)整數(shù): "); scanf("%d %d",&n1,&n2); // 如果用戶輸入的是負(fù)數(shù),則該數(shù)字的符號(hào)將更改為正數(shù) n1 = ( n1 > 0) ? n1 : -n1; n2 = ( n2 > 0) ? n2 : -n2; while(n1!=n2) { if(n1 > n2) n1 -= n2; else n2 -= n1; } printf("最大公因數(shù) = %d",n1); return 0; }
輸出結(jié)果
輸入兩個(gè)整數(shù): 81 -153 最大公因數(shù) = 9
您還可以使用遞歸來(lái)查找最大公因數(shù)。