/* 素数を求めるプログラム prime.c*/ #include #include #include #define _TRUE 1 #define _FALSE 0 int main(int argc, char *argv[]) { /* 各種変数の宣言 */ int i,j,k,n,*prime; /* 整数 */ long *list; /* 倍長整数 */ time_t start,end; /* 時間変数 */ /* パラメータの設定 */ if ( argc > 2){ printf("Usage: prime Maximum_Integer \n"); exit(1); } else if ( argc<2 ){ printf("Usage: prime Maximum_Integer \n"); printf("Input Maximum_Integer -->"); scanf("%d",&n); } else { n=atoi(argv[1]); } /* 時間の計測 始まりの時刻 */ time(&start); /* 配列prime[n]とlist[n]の動的確保 */ prime=(int *)malloc(n*sizeof(int)); list=(long *)malloc(n*sizeof(long)); k=1; list[k]=2; for(i=3;i<=n;i+=2) prime[i]=_TRUE; for(i=3;i<=n;i+=2){ if(prime[i]){ list[++k]=i; for(j=i;j<=n;j+=i) prime[j]=_FALSE; } } for(i=1;i