素数判定プログラムを作れという課題が出たんだが
■ このスレッドは過去ログ倉庫に格納されています
0048デフォルトの名無しさん
2011/03/24(木) 17:14:41.08#include <stdio.h>
int *primes; int size = SIZE_STEP;
int nth_prime(int n){
if(n >= size){
size = SIZE_STEP*(n/SIZE_STEP+1);
primes = realloc(primes,size);
}
if(primes[n] == 0){
int p = nth_prime(n-1);
do{p+=2}while(!is_prime(p));
primes[n]=p;
}
return primes[n];
}
int is_prime(int q){
int n = 0; int p;
for(p = nth_prime(n);p*p <= q;p=nth_prime(++n))
if(q%p == 0) return 0;
return 1;
}
int main(){
int count=0; int k;int n = 250;//入力n = 250と仮定
primes = malloc(size);
primes[0]=2; primes[1]=3;
for(k=2;k<=n;k++)
if(is_prime(k))count++,printf("%d\n",k);
printf("number of primes %d\n",count);
}
■ このスレッドは過去ログ倉庫に格納されています