私はk=3
からn
(上の値を与えられます)から、値k
ごとにこの関数を使ってチェックしています。アレイ内のすべての素数をn
まで取るように最適化するにはどうすればいいですか?各番号0を確認する必要はありませんか?与えられた値まで素数を見つけるための最適化方法n
int primeCheck(long long int k) {
int j;
int isPrime = 1;
int sr = (int)sqrt(k);
for (j = 2; j <= sr; j++) {
if (k % j == 0) {
//printf("=========== %d|%d\n", num,num2); // uncomment this to see if a number is divisible
isPrime = 0; // this number is not prime, cos num can be divided by num2
break;
}
}
if (isPrime) {
return isPrime; // reset the check parameter
} else {
return 0; // reset the check parameter
}
return 0;
}
すばらしい最適化は、すべての偶数をチェックすることではありません。 – infixed
ちょうど[2]を含む素数配列と1に設定されたカウンターで始める。そして、3で始まるすべての奇数を調べ、見つかった素数の配列を使用するこれまでのところ、新しい数値が素数であるかどうか、新しい素数を見つけるたびにそれを素数の配列に追加し、それまでに見つかった数を増やします。 – m69