素数生成プログラム

素数生成プログラムを書いてみたら勉強になるよ」と人間に言われたので、「えっそれ難しいんじゃないですか」と僕は言った。「任意のn番目の素数を求める関数(数学の意味で)」は存在しないらしく、それと勘違いしたから言ったけど、小さい方から順に求めるなら難しくない。ので、書いてみた。いつ始めたか覚えてないけど、30分か1時間くらいかかってしまった。恥ずかしい。

#include<stdio.h>
void main(void){
	int a, i, p;
	char flag;
	printf("Until what number do you want to search primary numbers?\n");
	scanf("%d", &p);
//2だけ始めに表示しておく
	printf("2, ");
//2から(自分-1)までで,1つでも自分を割り切れる整数があったら素数でない
	for(a = 3; a <= p; a++){
		flag = 0;
		for(i = 2; i < a; i++){
			if((a % i) == 0){
				flag = 1;
				break;
			}
		}
		if(flag == 0){
			printf("%d, ", a);
		}
	}
}