當前位置:首頁 » 編程軟體 » 編程最大公約數

編程最大公約數

發布時間: 2022-05-08 04:28:42

c語言編程,求兩個數的最大公約數和最小公倍數

這樣寫:
#include
void
main()
{
int
m,n,i,r,temp;
printf("請輸入第一個數的值:
");
scanf("%d",&m);
printf("請輸入第二個數的值:
");
scanf("%d",&n);
if(n>m)
{
temp=m;
m=n;
n=temp;
}
i=n;
while(i%m!=0)
{
i=i+n;
}
printf("最小公倍數是:%d
\n",i);
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("最大公約數是:%d
\n",n);
}
圖:

② 輸出兩個數的最大公約數 編程

#include<stdio.h>
void
main()
/*主程序開始*/
{
int
aa,bb,a,b,c,t;
printf("請輸入要求最大公約數和最小公倍數的兩個整數:\n");
scanf("%d
%d",&a,&b);
aa=a;
bb=b;
if(a<b)
{
t=a;
a=b;
b=t;
}
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("這兩個數的最大公約數為:%d\n",b);
printf("這兩個數的最小公倍數為:%d\n",aa*bb/b);
}

③ C語言程序設計如何求最大公約數

求最大公約數演算法

(1)輾轉相除法

兩整數a和b:

① a%b得余數c

② 若c=0,則b即為兩數的最大公約數,結束

③ 若c≠0,則a=b,b=c,再回去執行①

(2)相減法

兩整數a和b:

① 若a>b,則a=a-b

② 若a<b,則b=b-a

③ 若a=b,則a(或b)即為兩數的最大公約數,結束

④ 若a≠b,則再回去執行①

(3)窮舉法:

① i= a b中的小數

② 若a,b能同時被i整除,則i即為最大公約數,結束

③ i--,再回去執行②

相關代碼:

#include<stdio.h>
intxc_gcd(inta,intb)
{
intc;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
returnb;
}
intxj_gcd(inta,intb)
{
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
returnb;
}
intqj_gcd(inta,intb)
{
inti;
i=(a>b)?a:b;
while(a%i!=0&&b%i!=0)
i--;
returni;
}
voidmain()
{
//inta=36,b=27;
//inta=27,b=36;
inta=100,b=201;
printf("a=%db=%d ",a,b);
printf("輾轉相除法求最大公約數=%d ",xc_gcd(a,b));
printf("相減法求最大公約數=%d ",xc_gcd(a,b));
printf("窮舉法求最大公約數=%d ",xc_gcd(a,b));
}

運行效果圖:

④ 怎麼用c語言編程求最大公約數

基本原理如下:
用歐幾里德演算法(輾轉相除法)求兩個數的最大公約數的步驟如下:
先用小的一個數除大的一個數,得第一個余數;
再用第一個余數除小的一個數,得第二個余數;
又用第二個余數除第一個余數,得第三個余數;
這樣逐次用後一個數去除前一個余數,直到余數是0為止。那麼,最後一個除數就是所求的最大公約數(如果最後的除數是1,那麼原來的兩個數是互質數)。
例如求1515和600的最大公約數,
第一次:用600除1515,商2餘315;
第二次:用315除600,商1餘285;
第三次:用285除315,商1餘30;
第四次:用30除285,商9餘15;
第五次:用15除30,商2餘0。
1515和600的最大公約數是15。

⑤ C語言程序設計如何求最大公約數

具體操作步驟如下:

一、新建一個C語言源程序,使用Visual C++6.0的軟體。

⑥ c語言編程求最大公約數和最小公倍數

#include<stdio.h>
int
main()
{
int
m,n;
int
divisor,dividend,res;/*除數
被除數
余數*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循環體是三條語句,不加大括弧循環只執行一條語句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return
0;
}
兩數相乘除以最大公約數就是最小公倍數

⑦ C語言編程:輸入兩個正整數,輸出其中最大公約數和最小公倍數。

#include<stdio.h>

int main(){

int a,b,num1,num2,temp;

printf("please input two number: ");

scanf("%d%d",&num1,&num2);

if(num1<num2){

temp = num1;

num1 = num2;

num2 = temp;

}

a = num1;

b = num2;

while(b!=0){ /*利用輾除法,直到b為0為止*/

temp = a%b;

a=b;

b=temp;

}

printf("gongyueshu:%d ",a);

printf("gongbeishu:%d ",num1*num2/a);

}

(7)編程最大公約數擴展閱讀:

此題使用的是歐幾里德演算法,又稱輾除法。

只要可計算余數都可用輾轉相除法來求最大公因子,包括多項式、復整數及所有歐幾里德定義域(Euclidean domain)。

輾轉相除法的運算速度為 O(n2),其中 n 為輸入數值的位數。

利用輾轉相除法方法,可以較快地求出兩個自然數的最大公因數,即gcd 或叫做HCF 。

最大公約數(greatest common divisor,簡寫為gcd;或highest common factor,簡寫為hcf)

所謂最大公因數,是指幾個數的共有的因數之中最大的一個,例如 8 和 12 的最大公因數是 4,記作gcd(8,12)=4。

網路-輾除法

⑧ c語言編程-求最大公約數

求差判定法.

如果兩個數相差不大,可以用大數減去小數,所得的差與小數的最大公約數就是原來兩個數的最大公約數.例如:求78和60的最大公約數.78-60=18,18和60的最大公約數是6,所以78和60的最大公約數是6.

如果兩個數相差較大,可以用大數減去小數的若干倍,一直減到差比小數小為止,差和小數的最大公約數就是原來兩數的最大公約數.例如:求92和16的最大公約數.92-16=76,76-16=60,60-16=44,44-16=28,28-16=12,12和16的最大公約數是4,所以92和16的最大公約數就是4.

輾轉相除法.

當兩個數都較大時,採用輾轉相除法比較方便.其方法是:

以小數除大數,如果能整除,那麼小數就是所求的最大公約數.否則就用余數來除剛才的除數;再用這新除法的余數去除剛才的余數.依此類推,直到一個除法能夠整除,這時作為除數的數就是所求的最大公約數.

例如:求4453和5767的最大公約數時,可作如下除法.

5767÷4453=1餘1314

4453÷1314=3餘511

1314÷511=2餘292

511÷292=1餘219

292÷219=1餘73

219÷73=3

於是得知,5767和4453的最大公約數是73.

輾轉相除法適用比較廣,比短除法要好得多,它能保證求出任意兩個數的最大公約數.

--------------------------------------------------------------------------------

小學數學溫習過後,先來個兩個數遞歸版的

int GetGCDRec(int n, int m)
{
if (m < n)
{
m ^= n;
n ^= m;
m ^= n;
}

if (n == 0)
return m;
else
return GetGCDRec(n, m % n);
}
輾轉相除法,求一個數組中所有數的最大公約數

int GetGCD(int *arr, int len)
{
int iMax = arr[0], iCurr, iRemainder;

for(int i = 1; i < len; i++)
{
iCurr = arr[i];

if (iMax < iCurr)
{
iMax ^= iCurr;
iCurr ^= iMax;
iMax ^= iCurr;
}

iRemainder = iMax % iCurr;

while (iRemainder)
{
iMax = iCurr;
iCurr = iRemainder;
iRemainder = iMax % iCurr;
}

iMax = iCurr;
}//for

return iMax;

}
最小公倍數就是乘積除以最大公約數

int GetLCM(int *arr, int len)
{
int multiple = 1;

for (int i = 0; i < len; i++)
multiple *= arr[i];

return multiple / GetGCD(arr, len);
}

⑨ c語言程序設計編程最大公約數的程序怎麼寫

#include <stdio.h>
int main()
{
int a,b,c,d;
printf("請輸入兩個數(用逗號分隔):");
scanf("%d,%d",&a,&b);
if(a>b)
{
if(a%b==0)
printf("%d是%d,%d的最大公約數.",b,a,b);
else
{
for(c=1;c!=b;c++)
if(a%c==0&&b%c==0)
d=c;
}
printf("%d是%d,%d的最大公約數.",d,a,b);
}
else
{
if(b%a==0)
printf("%d是%d,%d的最大公約數.",a,a,b);
else
{
for(c=1;c!=a;c++)
if(a%c==0&&b%c==0)
d=c;
}
printf("%d是%d,%d的最大公約數.",d,a,b);
}
getchar();
return 0;
}

⑩ c語言編程:輸入兩個正整數,求最大公約數和最小公倍數

#include

voidmain(){

inta,b,n1,n2,t;

while(true)

{

printf("任意輸入兩個正整數: ");

scanf("%d%d",&n1,&n2);

if(n1

{

t=n1;

n1=n2;

n2=t;

}

a=n1;

b=n2;

while(b!=0){/*利用輾除法,直到b為0為止*/

t=a%b;

a=b;

b=t;

}

printf("最大公約數為:%d ",a);

printf("最小公倍數為:%d ",n1*n2/a);

}}

(10)編程最大公約數擴展閱讀

C語言求最大公約數輾轉相除法

#include<stdio.h>

intgcd(intm,intn);//將輾轉相除的過程封裝為函數,使主函數結構清晰。

intmain(void)

{

inta,b;

while(~scanf("%d%d",&a,&b)){//多組數據輸入時的方式之一與while(scanf("%d%d",&a,&b)!=EOF)用途相同

printf("%d ",gcd(a,b));

return0;

}

intgcd(intm,intn)

{

returnn?gcd(n,m%n):m;//此函數將輾轉相除的過程以遞歸的形式呈現,簡化程序屬於常規套路。

}

熱點內容
sql置疑 發布:2025-05-14 04:07:09 瀏覽:440
java面試的演算法題 發布:2025-05-14 04:06:18 瀏覽:467
交叉編譯優化 發布:2025-05-14 03:48:52 瀏覽:532
動圖在線壓縮 發布:2025-05-14 03:35:24 瀏覽:133
w7共享無法訪問 發布:2025-05-14 03:35:24 瀏覽:483
為什麼微信會出現賬號密碼錯誤 發布:2025-05-14 03:03:30 瀏覽:693
幻影腳本官網 發布:2025-05-14 03:01:13 瀏覽:827
servlet的webxml怎麼配置 發布:2025-05-14 02:51:46 瀏覽:773
怎麼取消手勢密碼 發布:2025-05-14 02:51:11 瀏覽:640
openvpn搭建vpn伺服器搭建 發布:2025-05-14 02:47:52 瀏覽:999