[問題] 傳入陣列求最大公因數和判斷質數的問題
我輸入幾個數字 並且將它存在陣列裡
然後 想要求出他們的最大公因數
我想要直接寫一個副程式 可以直接計算N個數的最大公因數
EX: A B C D
A與B求完最大公因數後 在和C做最大公因數 接著在和D做最大公因數
遇到瓶頸是 我副程式寫不好~
最基本的兩個我會寫
但是 N個的 我就寫不出來了
以下是程式碼
請各位大大幫個忙~
#include<stdio.h>
#include<stdlib.h>
int gcd(int *k,int x){
int tmp=1,y;
y=x;
k[y]=0;
for(x=0;x<y;x++){
while(tmp!=0){
tmp=k[x]%k[x+1];
k[x]=k[x+1];
k[x+1]=tmp;
k[y]=k[x];
if(k[y]!=0 && k[x+1]!=0){
k[x]=k[y];
tmp=k[x]%k[x+1];
k[x]=k[x+1];
k[x+1]=tmp;
k[y]=k[x];
}
}
}
printf("最大公因數是%d\n",k[x]);
return k[x];
}
int main(void){
int a,i,tmp,b;
int test[256];
printf("input number:");
scanf("%d",&b);
for(i=0;i<b;i++){
printf("number%d:\n",i+1);
scanf("%d",&test[i]);
}
a=gcd(test,b);
printf("%d\n",a);
if(a==2){
printf("YES\n");
}else if(a==1){
printf("不是質數\n");
}else{
for(i=2;i<a;i++){
tmp=a%i;
if(tmp==0){
printf("不是質數\n");
exit(1);
}else{
printf("YES\n");
exit(1);
}
}
}
return 0;
}
副程式怪怪的 不太會寫
請各位大大幫忙了~感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.74.222
推
05/08 23:22, , 1F
05/08 23:22, 1F
→
05/08 23:24, , 2F
05/08 23:24, 2F
推
05/08 23:26, , 3F
05/08 23:26, 3F
→
05/08 23:27, , 4F
05/08 23:27, 4F
→
05/08 23:28, , 5F
05/08 23:28, 5F
→
05/08 23:31, , 6F
05/08 23:31, 6F
→
05/09 09:14, , 7F
05/09 09:14, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章