作者cooboy (0.0)
看板C_and_CPP
标题[问题] 传入阵列求最大公因数和判断质数的问题
时间Fri May 8 23:18:40 2009
我输入几个数字 并且将它存在阵列里
然後 想要求出他们的最大公因数
我想要直接写一个副程式 可以直接计算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
1F:推 fjm31714:你不是已经写出作法了:) 用个for就可以达成了吧 05/08 23:22
2F:→ bleed1979:gcd = GCD( gcd, 第i个 ); 05/08 23:24
3F:推 VictorTom:写一个副程式算两个数gcd, 然後你可以先算头两个数的gcd 05/08 23:26
4F:→ VictorTom:然後像2F说的, 算目前的gcd和第i个数的gcd, i就从第三个 05/08 23:27
5F:→ VictorTom:数, loop到最後一个数就行了....:) 05/08 23:28
6F:→ cooboy:大概了解 试试看 感谢大大 05/08 23:31
7F:→ crazybad:这题我期中考考过~ 05/09 09:14