NaaN日記

やったこと、覚えたことを発信する場

1から与えられた数まで素数かどうか(C)

前回の続きができた。今度は1から与えられた数まで調べる

#include <stdio.h>
#include <math.h>
int main(void){
    int max;//最大値
    int i, j;
    int sosu[100];  //とりあえず100まで。ここが0だったら素数
    double sqr[100];  //それぞれの平方根
    int num[100];  //1から最大値までが入っている
    scanf("%d", &max);
    for(i=1; i<=max; i++){
        sosu[i-1] = 0;
        num[i-1] = i;
        sqr[i-1] = floor(sqrt(num[i-1]));
    }
    if(max>=3){
        printf("1\n");
        printf("2は素数です\n");
        printf("3は素数です\n");
        for(i=3; i<=max; i++){
            for(j=2; j<=sqr[i]; j++){
                if (num[i]%j == 0){
                    sosu[i] = 1;
                }
                if (j == sqr[i]){
                    if (sosu[i] == 0){
                        printf("%dは素数です\n", num[i]);
                    }
                    else{
                        printf("%d\n", num[i]);
                    }
                }
            }
        }
    }
    else if (max == 1){
        printf("1\n");
        }
    else if(max == 2){
        printf("1\n");
        printf("2は素数です\n");
    }
    return 0;
}

やっぱり3以下は直接書いた方が早いという結論に現時点では至っている。
あと、とにかく大きい数を入力したくなる。