/* 専門コア情報処理演習教材 test6.c */ /* 素数判定プログラム */ /* コンパイル命令は gcc -o t6 test6.c -lm 実行コマンドは ./t6 */ #include // ヘッダ・ファイルを読み込みます。 #include #include #include main() { int n,m,i,h,t1,t2; srand(time(NULL)); n = 20020109; while(1){ printf("----------------------------------\n"); printf("素数判定のサンプルプログラムです。\n\n"); printf("n = %d ",n); printf("が素数かどうか判定します。\n\n"); printf("2 から n-1 までの数で割ってみる :\n"); t1 = clock(); // 開始時刻 h = 1; i = 2; while((i < n) && (h == 1)){ if(n%i == 0) h = 0; else i++; } if(h == 1) printf(" n は素数です。"); else printf(" n は %d で割り切れます。",i); t2 = clock(); // 終了時刻 printf("(所要時間 = %d マイクロ秒)\n\n",t2-t1); // マイクロ秒は 1/10^6 秒 printf("3 から n-2 までの奇数で割ってみる :\n"); t1 = clock(); // 開始時刻 h = 1; i = 3; while((i < n) && (h == 1)){ if (n%i == 0) h = 0; else i += 2; } if(h == 1) printf(" n は素数です。"); else printf(" n は %d で割り切れます。",i); t2 = clock(); // 終了時刻 printf("(所要時間 = %d マイクロ秒)\n\n",t2-t1); printf("2 から n の平方根までの数で割ってみる :\n"); t1 = clock(); // 開始時刻 h = 1; m = (int)sqrt(n); i = 2; while((i <= m) && (h == 1)){ if(n%i == 0) h = 0; else i++; } if(h == 1) printf(" n は素数です。"); else printf(" n は %d で割り切れます。",i); t2 = clock(); // 終了時刻 printf("(所要時間 = %d マイクロ秒)\n\n",t2-t1); printf("2 から n の平方根までの奇数で割ってみる :\n"); t1 = clock(); // 開始時刻 h = 1; m = (int)sqrt(n); i = 3; while((i <= m)&& (h == 1)){ if(n%i == 0) h = 0; else i += 2; } if(h == 1) printf(" n は素数です。"); else printf(" n は %d で割り切れます。",i); t2 = clock(); // 終了時刻 printf("(所要時間 = %d マイクロ秒)\n\n",t2-t1); printf("何かキーを押してください。( 終了は Ctrl + C です。)\n"); getchar(); n = 2048*(rand())+10000001; } }