-1
我認爲這個代碼下面有全局範圍和局部範圍的問題。如果有人請幫助我,爲什麼這個代碼不工作! 這是一個尋找第25個神奇數字的程序。數字意味着它除了2,3,5之外沒有任何主要因素。我已經從16號開始,這是第12號神奇號碼。然後檢查數字是否可以用7中的任何素數整除,所以我列出全局數組中的素數。並用數組中的素數檢查數字。如果此檢查完成,程序將嘗試使用next_prime函數查找下一個素數,並將它們列入全局數組中。但我得到錯誤的結果。它始終給出不是預期的結果輸入+ = 4。與範圍東西
/*a program to find out 25th magical number. magical number
means it has no prime factor except 2,3,5*/
#include<stdio.h>
#include<math.h>
double primes[10000]={2,3,5};
int serial=3;
double next_prime(double f)//function, when called, returns the next prime number
{
int j=0,loop_breaker=0;
int count;
while(j==0){
for(count=1;primes[count]<sqrt(f)+1 &&count<serial;count++){
if(fmod(f,primes[count])==0){
f+=2;
loop_breaker=1;
break;
}
}
if(loop_breaker==0){
primes[serial]=f;
serial++;
j=1;
}
}
return f;
}
int main()
{
double f=7,prime_divisor,magic_serial=12,magic_number=16;
int c,loop_breaker,is_magic;
prime_divisor=next_prime(f);
f+=2;//this line always comes after the previous line so that everytime the value of f gets changed
while(magic_serial!=25){
is_magic=0;
loop_breaker=0;
for(c=3;c<serial;c++){
if(fmod(magic_number,primes[c])==0){
loop_breaker=1;
break;
}
}
if(loop_breaker==0){
while(prime_divisor<sqrt(magic_number)+1){
prime_divisor=next_prime(f);
f+=2;
if(fmod(magic_number,prime_divisor)==0){
is_magic=1;
break;
}
}
}
if(is_magic==0){
magic_serial++;
}
magic_number++;
}
printf("%lf",magic_number);
return 0;
}
你對'double f'的期望範圍是什麼? – C2H5OH 2012-08-08 20:33:25
它在主函數 – 2012-08-08 20:35:41
請記住,C數組從索引0開始,而不是索引1 ... – Roddy 2012-08-08 20:43:59