[アルゴリズム] 1から100までの素数を取得(C言語編)

2017年3月5日

C言語 テクノロジー プログラミング 特集

C言語は処理が速いと言われることを、体感できた回になりました。 こういうCPU負荷が同一の時に言語別に処理時間を計測することは、サービス構築時にどの言語をチョイスするかという議論の基本的なゴールになるので、自分の中で有意義理論を確立できた内容になり、個人的に満足してます。 まあ、通常は、複数言語を構築して比べるなんてことはあまりしないですからね。

ソースコード

#include <stdio.h> int getPrimeNumber(int num){ int flg = 0; for(int i=2; i<num-1; i++){ if(num % i == 0){ flg = i; break; } } return flg; } int main(){ for(int i=2; i<=100; i++){ int res = getPrimeNumber(i); if(res == 0){ printf("%d \n",i); } } return 0; }

実行

$ gcc -o prime_number prime_number.c $ time ./prime_number 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 real 0m0.008s user 0m0.002s sys 0m0.002s 今回も時間計測を行ってみました。
100 : 0.008s 1000 : 0.007s 10000 : 0.044s 100000 : 1.630s 1000000 : 3m7.838s
今回の分岐点は、100万上限でしたね。

解説

C言語の配列は固定長

毎回苦しめられますが、C言語で配列を初めに定義する時、配列の最大値を定義しておかなければいけません。 今回のように、最終的に個数が何個になるか分からないような場合は、C言語の苦手分野ということで、AWKと同じく、結果を表示する仕様にして、配列保持はしないようにしました。

リンク

色々なプログラム言語でアルゴリズム学習

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。