前提・実現したいこと
C言語を用いて、1〜10万までの数字の中から素数を見つけ出し、表示するプログラムを作りたくてググったところ、2つのソースコードが見つかりました。
発生している問題・エラーメッセージ
実行速度が全然違ったので、どうしてこんなに変わるのか教えてください!
初心者なので、出来るだけわかりやすく教えていただけると幸いです。
該当のソースコード
C
1#include <stdio.h> 2 3int main(void) 4{ 5 int i,j,k; 6 int c=0; 7 8 for(i=1;i<=100000;i++) { 9 k=0; 10 for(j=1;j<=i;j++) 11 { 12 if(i%j==0) k++; 13 } 14 15 if(k==2) { 16 printf("%d ",i); 17 ++c; 18 } 19} 20 21 printf("\n"); 22 23 printf("個数: %d\n",c); 24 25 return 0; 26} 27
C
1#include <stdio.h> 2 3int dispPrimarity(int n1, int n2) 4{ 5 6 int i = 0; 7 int j = 0; 8 9 // 素数判定 10 for( i=n1;i<=n2;++i ) { 11 int flag = 0; 12 for( j=2;j<i;++j) { 13 if( i%j == 0) { 14 flag = 1; 15 break; 16 } 17 } 18 // 素数なら出力 19 if( flag == 0 ) 20 printf("%d ", i); 21 } 22 return 0; 23} 24 25int main(void) 26{ 27 // 1~100000までの素数を表示 28 dispPrimarity(1, 100000); 29 30 return 0; 31} 32
補足情報(FW/ツールのバージョンなど)
最初の方の実行速度が
real 0m18.922s
user 0m18.303s
sys 0m0.104s
2つ目の実行速度が
real 0m1.855s
user 0m1.670s
sys 0m0.016s
でした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。