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

求n個數最大公約數c語言代碼

發布時間: 2022-05-15 15:45:01

1. c語言問題 求n個數最大公約數

#include<stdio.h>
main(void)
{inta[9],n,t,i,temp1,temp2,c,d;
printf("請輸入您所要輸入的數字個數(須在2-9之間) ");
scanf("%d",&n);
for(i=0;i<n;i++)
{scanf("%d",&a[i]);
}
if(a[0]<a[1])
{temp1=a[0];
a[0]=a[1];
a[1]=temp1;
}
while(a[0]%a[1]!=0)
{c=a[0];
a[0]=a[1];
a[1]=c%a[1];
}
a[0]=a[1];
for(i=0;i<n;i++)
{if(a[0]<a[i])
{temp2=a[0];
a[0]=a[i];
a[i]=temp2;
}
while(a[0]%a[i]!=0)
{d=a[0];
a[0]=a[i];
a[i]=d%a[i];
}
a[0]=a[i];
}
printf("您所輸入的數字最大公約數為%d",a[0]);

}

2. c語言求n個數的最大公約數和最小公倍數求個程序 剛入門不要太難的。。。

#include<stdio.h>
intmain()
{
inta[100],n,i,d;
printf("請輸入您所要輸入的數字個數 ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
while(a[i]%a[0]!=0)
{
d=a[i];
a[i]=a[0];
a[0]=d%a[0];
}
}
printf("您所輸入的數字最大公約數為:%d",a[0]);
}

3. C語言輸入n個正整數,求他們的最大公約數和最小公倍數

最大公約數用歐幾里得演算法,比如輸入 a 和 b ,求得最大公約數是 c,那麼最小公倍數就是 ( a * b / c )
參考代碼如下:

#include<stdio.h>
int gcd( int a, int b )
{
if ( b == 0 )
return a;
else
return gcd( b, a % b );
}

int main()
{
int a, b, c;
printf( "Input two numbers : " );
scanf("%d%d", &a, &b);
c = gcd( a, b );
printf( "最大公約數是 %d\n", c );
printf( "最小公倍數是 %d\n", (a * b / c) );
return 0;
}

4. c語言求最大公約數

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

5. C語言求n個正整數的最大公約數和最小公約數

int num[1000];
int n;
int MCD(a,b) //輾轉相除法求最大公約數
int a,b;
{
int s;
if(b>a) {a=a+b;
b=a-b;
a=a-b;
}
s=a%b;
while(s!=0)
{
a=b;
b=s;
s=a%b;
}
return b;
}

int input()
{
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
}

int Max()
{
int i;
int max=0;
for(i=0;i<n;i++)
if(num[i]>max) max=num[i];
return max;
}

int main()
{
int f;
int i;
int m;
input();
f=MCD(num[0],num[1]);
for(i=2;i<n;i++)
f=MCD(f,num[i]);
printf("%d\n",f); //最大公約數
m=Max()*f;
printf("%d\n",m); //最小公倍數
getchar();
getchar();
}

6. c語言編程,輸入n個正整數,求最大公約數。(最好有注釋)

#include<stdio.h>
#define N 3/* 正整數的個數 */
int lcd(int a,int b)/* 輾轉相除法求最大公約數 */
{int c;
while(b!=0) /* 余數不為0,繼續相除,直到余數為0 */
{ c=a%b; a=b; b=c;}
return a;
}
void main()
{
int i,j;
int a[N];
printf("Input %d numbers:\n",N);
for(i=0;i<N;i++)
scanf("%d", &a[i]);
j=a[0];
for(i=0;i<N;i++)
j=lcd(a[i],j);
printf("The largest common divisor:%d\n", j);
}

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

具體操作步驟如下:

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

8. C語言求最大公約數的代碼

你的代碼,主要的錯誤在for循環里的判斷條件,應該是a%i!=0&&b%i!=0
不等號;但是,是了很久,發現這樣的演算法或者說思路也是錯誤的!因為你這樣找到的只是兩個數的最小公約數,而非最大公約數的,你可以用原來的想法,i

兩個數中較小者那個從大到小去循環,從而找到兩個數的公約數,也就是(從大到小)倒這來找公約數;或者建議你考慮輾轉相除法,輾轉相除法的思路是這樣的:若
m和n為這連個正整數,有:當m>n,m與n
的最大公約數等於
n

m%n的最大公約數當n=0
,m與
n
的最大公約數等於
m,以下是演算法,使用for語句:#include<stdio.h>
#include<windows.h>
int
main(){
int
a,b,m,n,r;
printf("輸入兩個正整數(請用逗號隔開):");
scanf("%d%d",&a,&b);
if(a>b)
{
m=a;
n=b;
}
else
{
m=b;
n=a;
}
for(r=b;r!=0;){
r=m%n;
m=n;
n=r;
}
printf("%d

%d
的最大公約數是:%d\n",a,b,m);
system("PAUSE");
return
0;
}

9. 求n個正整數的最大公約數,先輸入n的值再輸入n個正整數的數值,然後求最大公約數(c語言編程實現)

#include<stdio.h>
#defineN100/*正整數的個數*/
intlcd(inta,intb)/*輾轉相除法求最大公約數*/
{intc;
while(b!=0)/*余數不為0,繼續相除,直到余數為0*/
{c=a%b;a=b;b=c;}
returna;
}
voidmain()
{
inti,j;
inta[N];
printf("Input%dnumbers: ",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
j=a[0];
for(i=0;i<N;i++)
j=lcd(a[i],j);
printf("Thelargestcommondivisor:%d ",j);
}

10. 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));
}

運行效果圖: