for文のなかで回される数字に素数で割ることで動作を中断させたい。
for(i = 0; i < ptr; i++){ if(n % prime[i] == 0) break; }
この部分で配列primeのなかにある素数でnの数字を割ることで素数の計算量を減らしたいと考えております。
自分の考えではiが回って、prime[0],[1],[2]と入って行って、割ることができればそこで中断する。ということ思ってこのように書いてみたのですが、どうもうまくいきません。
コンパイルしても「3」しか出てきません。
考え方の示唆やヒントを与えてくださると幸いです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
なし
該当のソースコード
C++
1 2#include <cmath> 3#include <iostream> 4#include <stdio.h> 5 6int main(void) 7{ 8 int i, n; 9 int prime[500]; 10 int ptr = 0; 11 12 prime[ptr++] = 2; 13 prime[ptr++] = 3; 14 15 16 for (n = 3; n <= 1000; n += 2) { 17 for(i = 0; i < ptr; i++){ 18 if(n % prime[i] == 0) 19 break; 20 } 21 22 if (n % i == 0) 23 break; 24 } 25 if (n == i) 26 prime[ptr++] = n; 27 printf("%d\n", n); 28 29 return (0); 30 }
回答1件
あなたの回答
tips
プレビュー