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以下は直接書いた方が早いという結論に現時点では至っている。
あと、とにかく大きい数を入力したくなる。