#include枝如stdio.h
富寧網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),富寧網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為富寧近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的富寧做網(wǎng)站的公司定做!
int gcd(int m, int n);
int lcd(int m, int n);
int main()
{
int a, b;
printf("猛羨啟輸入派閉兩個正整數(shù):");
scanf("%d%d", a, b);
printf("%d 和 %d 最大公約數(shù)為%d\n", a, b, gcd(a, b));
printf("最小公倍數(shù)為:%d\n", lcd(a, b));
}
int gcd(int m, int n)
{
int t;
if (mn)
{
t = m;
m = n;
n = t;
}
while (n != 0)
{
t = m%n;
m = n;
n = t;
}
return m;
}
int lcd(int m, int n)
{
int t;
t = m*n / gcd(m, n);
return t;
}
c語言求最大公約數(shù)有輾轉(zhuǎn)相除法、更相減損術(shù)、窮舉法三種。
輾轉(zhuǎn)相除法。算法簡介:將兩個數(shù)a,b相除,如果余數(shù)c不等于0,就把b的值給a,c的值給b,直到c等于0,此時最大公約數(shù)就是b。
更相減損術(shù)。算法簡介:將兩個數(shù)中較大的數(shù)a減去較小的數(shù)b,如果差c等于0,那么最大公約數(shù)為b,如果不等于0,則將b的值給a,c的值給b,繼續(xù)相減直到差等于0。
窮舉法。算法簡介:將兩個數(shù)a,b中較小的值賦給i,將a除以i,b也除以i,若兩者的余數(shù)同時為0時,此時的i就是兩者的最大襪森公約數(shù)。若不等于0,則將i-1,繼續(xù)將a除以i,b除以i,直至余數(shù)同時為0。
最大公約數(shù):
最大公因數(shù),也稱最大公約數(shù)、最大公因子,指兩個或多個整數(shù)共有約數(shù)中最大的一個。a,b的最大公約數(shù)記為(a,b),同樣的,a,b,c的最大公約數(shù)記為(a,b,c),多個整數(shù)的最大公約數(shù)也有同樣的記號。
早在公元前300年左右,歐幾里得就在他的著作《幾何原本》中給出了高緩好卜效的解法——輾轉(zhuǎn)相除法。輾轉(zhuǎn)相除法使用到的原理很聰明也很簡單,假設(shè)用f(x,y)表示x,y的最大公約數(shù),取k=x/y,b?=x%y,則x=ky+?b,如果一個數(shù)能夠同擾穗時整除x和y,則必能同時整除b和y。
而能夠同時整除b和y的數(shù)也必能同時整除x和y,即x和y的公約數(shù)與b和y的公約數(shù)是相同的,其最大公約數(shù)也是相同的,則有f(x,y)=f(y,x%y)(y0),如此便可把原問題轉(zhuǎn)化為求兩個更小數(shù)的最大公約數(shù),直到其中一個數(shù)為0,剩下的另外一個數(shù)就是兩者最大的公約數(shù)。
#include
"stdio.h"
int
main()
{
int
d1,d2,r;
printf("輸入兩個正整數(shù):");
scanf("%d
%d",d1,d2);
do
{
r=d1%d2;
d1=d2;d2=r;
}while(d2!=0);
printf("最大公約數(shù)喊好悄是:%d",d1);
}
//遞鄭渣歸法
#include
"stdio.h"
int
fun(int
d1,int
d2)
{
if(d2!=0)
return
fun(d2,d1%d2);
else
return
d1;
}
int
main()
{
int
d1,d2;
printf("輸入兩個正整數(shù)襪前:");
scanf("%d
%d",d1,d2);
printf("最大公約數(shù)是:%d",fun(d1,d2));
}