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

求最大公約數的c語言程序

發布時間: 2022-09-27 10:11:10

c語言程序:求兩個數的最大公約數

#include
<stdio.h>
#include
<stdlib.h>
//使用歐氏演演算法求最大公約數
int
gcd(int
a,
int
b)
{
if
(a
<
b)
{
int
t
=
a;
a
=
b;
b
=
t;
}
if
(a
%
b
==
0)
{
return
b;
}
else
{
return
gcd(b,
a
%
b);
}
}
int
main()
{
printf("請輸入兩個數:\n");
int
a,
b;
scanf("%d",
&a);
scanf("%d",
&b);
printf("最大公約數為:%d",
gcd(a,
b));
return
0;
}

⑵ 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語言求最大公約數

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

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

具體操作步驟如下:

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

⑸ C語言編程:輸入兩個正整數m和n,求它們的最大公約數。

代碼及注釋如下:

#include <stdio.h>

int GCD(int a,int b)//定義函數,用來計算最大公約數

{

return b==0?a:GCD(b,a%b);

//此處使用了遞歸,如果b=0,返回a為最大公約數,否則,一直以b與a%b賦給函數,實現輾轉相除

}

int main()

{

int a, b ; //定義實參a, b

int answer ; //定義最後結果

scanf ( "%d%d" , &a, &b) ; //取a,b的值

answer = GCD (a, b) ; //把結果賦給answer

printf ( "%d與%d的最大公約數為%d " , a , b , answer ) ; //輸出結果

}

(5)求最大公約數的c語言程序擴展閱讀:

輾轉相除法求最大公約數的原理:

因為對任意同時整除a和b的數u,有a=su,b=tu,它也能整除r,因為r=a-bq=su-qtu=(s-qt)u。

反過來每一個整除b和r的整數v,有 b=sv , r=tv,它也能整除a,因為a=bq+r=svq+tv=(sq+t)v。

因此a和b的每一個公因子同時也是b和r的一個公因子,反之亦然。

這樣由於a和b的全體公因子集合與b和r的全體公因子集合相同,所以a和b的最大公因子必須等於b和r的最大公因子,這就證明了上邊的等式。即(a,b)=(b,r)。

因而,可以由此,得到兩個數的最大公約數。

⑹ 用C語言求最大公約數(有具體描述)

#include
"stdio.h"
long
fun(long
a,long
b)
{
long
i=a>b?b:a;
//把a,b的最小值賦值給i
do{
if(a%i==0&&b%i==0)
break;//判斷i能否被a,b整除,若能,結束循環;不能的話i-1再次判斷……直到i同時能被a,b整除為止
}while(i--);
return
i;
}
void
main()
{
long
a[30],b[30],n,i=0;
//printf("輸入n:");
scanf("%ld",&n);
i=n;
//printf("輸入%ld組數:\n",n);
while(n--){
scanf("%ld%ld",&a[n],&b[n]);
a[n]=fun(a[n],b[n]);//最大公約數賦值給a[n]
}
//printf("最大公約數分別為:\n");
while(i--)
printf("%ld\n",a[i]);
}
我就只會這種方法求最大公約數,main函數中注釋的地方可以把注釋符去掉!

⑺ 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);
}
圖:

⑻ 如何用C語言求兩個數的最大公約數的三種演算法

1、相減法

#include&lt;stdio.h&gt;

int main()

{

int a,b;

int c=0;//計數器

while(1)//循環判斷的作用

{

printf("輸入兩個數字求最大公約數:");

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

while(a!=b)

{

if(a&gt;b)

a=a-b;

else

b=b-a;

c++;

}

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

printf("%d ",c);

}

return 0;

}

運行效果:

2、輾轉相除法:

#include&lt;stdio.h&gt;

int a,b,temp;

int Division(){

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

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

if(a&lt;b){

temp=a;

a=b;

b=temp;

}

while(a%b!=0){

temp=a%b;

a=b;

b=temp;

}

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

return 0;

}

3、窮舉法

#include&lt;stdio.h&gt;

int main()

{

int a,b,c;

int d=0;//計數器

while(1)

{

printf("輸入兩個數字求最大公約數:");

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

c=(a&gt;b)?b:a;//三目運算符

while(a%c!=0||b%c!=0)

{

c--;

d++;

}

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

printf("%d ",d);

}

return 0;

}

⑼ 用C語言計算三個數的最大公約數

用C語言計算三個數的最大公約數的方法如下:

准備材料:Visual Studio 2019、電腦

1、首先打開Visual Studio,新建一個Win32控制台程序,