/************************************************* *プログラム名:プライムサーチ *プログラム概要:入力された範囲内の素数を検索します。 *約14億までの計算が可能。long int型 *リリース:2.0.2 *ソース制作者:Toshiaki Yokoda. *作成日時:2003.6.25.(thu) **************************************************/ #include int main() { long start, b, c, r, e, end; /*注意!"e"は余りが0であるかそうでないかを1と2を使って表現する(真偽判定する)ためのフラグのようなものです。ロングインテジャー型にした意味は特にありません。私の勉強不足と面倒臭がりによるものです。*/ c=2; /*わり算は、2からはじめます。*/ printf("input lange...start...\n");/*計算範囲のはじめの数を、ユーザーに要求します。*/ scanf("%ld", &start); /*計算範囲の始めをstartに代入します。*/ printf("input lange...end...\n");/*計算範囲の終わり数を、ユーザーに要求します。*/ scanf("%ld", &end); /*計算範囲の終わりをendに代入します。*/ printf("_/_/_/lange "); printf("%ld", start); printf("~"); printf("%ld", end); printf(" _/_/_/...Let's go! -----START-----\n"); b=start; r=b%c; if ( start <= 2 ) { /*はじめの数字が2以下の場合は、2を表示して計算は3からはじめます。*/ printf("2\n"); b=3; } while ( b <= end ) /*endまで続けるための記述です。*/ { while ( c < b ) /*2からはじめてインクリメントし、c < b となるまで割っていきます。*/ { r=b%c; if ( r == 0 ){ /*余りが0ならeの値に2を代入し、素数でないことを変数を用いてフラグを立てます*/ e=2; /*素数でないことを意味します。*/ c=b; /*c=bとすることで、計算を終了させます。*/ } else{ /*余りが0以外ならeの値に1を代入し、計算の続行をさせます。*/ c=c+1; /*cをインクリメントし、次の整数で計算します。*/ e=1; /*素数の可能性があることを意味します。*/ } } if ( e == 1 ){ /*素数ならその数を表示します。*/ printf("%ld", b); printf("\n"); } else{ /*合成数ならばその数と、下の記述を表示します。*/ printf("%ld", b); printf("///////not prime number////////\n"); } b=b+1; /*bをインクリメントし、次の素数を探します。*/ c=2; /*cをリセットする意味を持っています。*/ } printf("_/_/_/END_/_/_/ -----END-----\n"); } /*実行結果例 input lange...start... 1 input lange...end... 10 _/_/_/lange 1~10 _/_/_/...Let's go! -----START----- 2 3 4///////not prime number//////// 5 6///////not prime number//////// 7 8///////not prime number//////// 9///////not prime number//////// 10///////not prime number//////// _/_/_/END_/_/_/ -----END----- */