⑴ 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<stdio.h>
int main()
{
int a,b;
int c=0;//計數器
while(1)//循環判斷的作用
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
c++;
}
printf("最大公約數是:%d ",a);
printf("%d ",c);
}
return 0;
}
運行效果:
2、輾轉相除法:
#include<stdio.h>
int a,b,temp;
int Division(){
printf("請輸入兩個數(a,b): ");
scanf("%d,%d",&a,&b);
if(a<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<stdio.h>
int main()
{
int a,b,c;
int d=0;//計數器
while(1)
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
c=(a>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控制台程序,