今天給各位分享c語言求最大公約數(shù)的知識,其中也會對C語言求最大公約數(shù)函數(shù)進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
1、相減法
#includelt;stdio.hgt;
intmain()
{
inta,b;
intc=0;//計數(shù)器
while(1)//循環(huán)判斷的作用
{
printf("輸入兩個數(shù)字求最大公約數(shù):");
scanf("%d%d",a,b);
while(a!=b)
{
if(agt;b)
a=a-b;
else
b=b-a;
c++;
}
printf("最大公約數(shù)是:%d ",a);
printf("%d ",c);
}
return0;
}
運行效果:
2、輾轉(zhuǎn)相除法:
#includelt;stdio.hgt;
inta,b,temp;
intDivision(){
printf("請輸入兩個數(shù)(a,b): ");
scanf("%d,%d",a,b);
if(alt;b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公約數(shù)為:%d ",b);
return0;
}
3、窮舉法
#includelt;stdio.hgt;
intmain()
{
inta,b,c;
intd=0;//計數(shù)器
while(1)
{
printf("輸入兩個數(shù)字求最大公約數(shù):");
scanf("%d%d",a,b);
c=(agt;b)?b:a;//三目運算符
while(a%c!=0||b%c!=0)
{
c--;
d++;
}
printf("最大公約數(shù)是:%d ",c);
printf("%d ",d);
}
return0;
}
最大公約數(shù)算法:
(1)輾轉(zhuǎn)相除法
兩整數(shù)a和b:
①a%b得余數(shù)c
②若c=0,則b即為兩數(shù)的最大公約數(shù),結(jié)束
③若c≠0,則a=b,b=c,再回去執(zhí)行①
(2)相減法
兩整數(shù)a和b:
①若ab,則a=a-b
②若ab,則b=b-a
③若a=b,則a(或b)即為兩數(shù)的最大公約數(shù),結(jié)束
④若a≠b,則再回去執(zhí)行①
(3)窮舉法:
①i=ab中的小數(shù)
②若a,b能同時被i整除,則i即為最大公約數(shù),結(jié)束
③i--,再回去執(zhí)行②
1、新建一個C語言源程序,這里使用VisualC++6.0的軟件:
2、從鍵盤中輸入兩個正整數(shù)a和b。取兩個數(shù)a,b中的較小值存放到變量n中。從兩個數(shù)a和b中的較小數(shù)開始逐個減小1,尋找能整除a和b的整數(shù),第一個找到的整數(shù)即整數(shù)a和b的最大公約數(shù),最后將找到的結(jié)果輸出即可完成程序的編寫:
3、對源程序編譯運行,測試輸入4、6,得到最大公約數(shù)2說明程序是正確的,以上就是用c語言求最大公約數(shù)的過程:
關(guān)于c語言求最大公約數(shù)的內(nèi)容到此結(jié)束,希望對大家有所幫助。