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