C/C++の宿題を片付けます 76代目
■ このスレッドは過去ログ倉庫に格納されています
0115デフォルトの名無しさん
2006/11/07(火) 22:00:52#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int *sieve_of_eratosthenes(int upper) {
int i, notprime, *integers = (int*)malloc(sizeof(int) * (upper + 1));
for (i = 2; i <= upper; i++) integers[i] = 1;
integers[0] = integers[1] = 0;
for (i = 2; i <= upper / 2; i++) {
notprime = i;
while ((notprime += i) <= upper) integers[notprime] = 0;
}
return integers;
}
int is_prime(int n) {
int *sieve = sieve_of_eratosthenes(n), ret = sieve[n];
free(sieve);
return ret;
}
int main(void) {
int upper_num, *sieve, i;
printf("MAX?:");
scanf("%d", &upper_num);
sieve = sieve_of_eratosthenes(upper_num);
for (i = 2; i <= upper_num; i++)
if (sieve[i]) printf("%4d", i);
free(sieve);
}
■ このスレッドは過去ログ倉庫に格納されています