當前位置:首頁 » 編程語言 » c語言求最大公約數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言求最大公約數

發布時間: 2022-02-27 03:23:49

『壹』 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語言程序設計如何求最大公約數

具體操作步驟如下:

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

『叄』 c語言如何求最大公約數和最小公倍數

#include <stdio.h>

int main()

{

int a,b,c,m,t;

printf("請輸入兩個數: ");

scanf("%d%d",&a,&b);

if(a<b)

{

t=a;

a=b;

b=t;

}

m=a*b;

c=a%b;

while(c!=0)

{

a=b;

b=c;

c=a%b;

}

printf("最大公約數是: %d ",b);

printf("最小公倍數是: %d ",m/b);

}

(3)c語言求最大公約數擴展閱讀

演算法思想

利用格式輸入語句將輸入的兩個數分別賦給 a 和 b,然後判斷 a 和 b 的關系,如果 a 小於 b,則利用中間變數 t 將其互換。

再利用輾轉相除法求出最大公約數,進而求出最小公倍數。最後用格式輸出語句將其輸出。

#include<stdio.h>是在程序編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以「#」開頭,並且不用分號結尾,所以是c語言的程序語句。

『肆』 C語言求最大公約數

什麼錯誤?我運行得沒有問題啊?你把下面整個函數拷過去編譯.

----------------------------------
int fac(int x,int y)
{
int n,t,z;
if(x<y)
{
t=x;
x=y;
y=t;
}
n=x%y; //先比大小再求mod
while(n!=0)
{
x=y;
y=n;
n=x%y; //這里不能少
}
z=y;
return(z);
}

『伍』 C語言中求最大公約數的函數

#include
"stdio.h"
int
main()
{
int
d1,d2,r;
printf("輸入兩個正整數:");
scanf("%d
%d",&d1,&d2);
do
{
r=d1%d2;
d1=d2;d2=r;
}while(d2!=0);
printf("最大公約數是:%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("輸入兩個正整數:");
scanf("%d
%d",&d1,&d2);
printf("最大公約數是:%d",fun(d1,d2));
}

『陸』 c語言求兩個數的最大公約數

程序是正確的,只是演算法上過於繁瑣,i從1到a,所有的數都要循環一次。

『柒』 C語言求最大公約數的代碼

int gcd(int a,int b){
int remainder;
remainder=a%b;
while(remainder){
a=b;
b=remainder;
remainder=a%b;
}
return b;
}有問題可以繼續問,本人QQ314156403

『捌』 c語言中求最大公約數和最小公倍數的程序

#include <stdio.h>

int gcd(int m,int n)

{ return n?gcd(n,m%n):m;

}

int main()

{ int a,b;

scanf("%d%d",&a,&b);

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

printf("Lcm(%d,%d)=%d ",a,b,a*b/gcd(a,b));

return 0;

}

『玖』 怎麼用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。