STEP 6.1(素数を求める代表的な3つの方法を比較)

#include<stdio.h>
#define N
int main(void){

    int p[N+1];
    int i, j;

    for(i = 2; i < N + 1; i++) {
        p[i] = 1;
    }
   
素数を順番に確定していく作戦
for(i = 2; i < N+1; i++) {
    for(j = 2; j < i; j++) {
        if(p[j] == 1 && i%j == 0) {
            p[i] = 0;
        }
        printf("*");
    }
    printf("\n");
}
後ろの数を調べて消去作戦
for(i = 2; i < N+1; i++) {
    printf("%*s", i, "");
    for(j = i+1; j < N+1; j++) {
        if(j%i == 0) {
            p[j] = 0;
        }
        printf("*");
    }
    printf("\n");
}
確定した素数、後ろの倍数を0作戦
for(i = 2; i < N+1; i++) {
    if(p[i] == 1) {
        for(j = 2; i*j < N+1; j++) {
            p[i*j] = 0;
            printf("*");
        }
        printf("\n");
    }
}
    for(i = 2; i < N+1; i++) {
        if(p[i]==1) {
            printf("%3d", i);
        }
    }

    printf("\n");

    return 0;
}




実行結果