作爲初學者,我編寫了一個程序,用於查找不高於輸入自然數(x
)的素數(prime
)。該程序工作正常(我認爲),但我想讓它工作得更快(對於更高的數字)。這有可能,如果是的話,如何?C程序優化/速度提高
#include <stdio.h>
int main() {
int x, i, j, flag = 1, prime = 0 ;
scanf("%d", &x);
for (i = 2; i <= x; i++) {
j = 2;
while (flag == 1 && j < i/2 + 1) {
if (i % j == 0) {
flag = 0;
}
j++;
}
if (flag == 1) {
prime++;
}
flag = 1;
}
printf("%d\n", prime);
return 0;
}
1:找到一個更好的算法。 2.對於你當前的算法,注意只有一個偶素。 3.對於你當前的算法,請注意,如果你在第一個'sqrt(n)'數字中沒有找到除數,'n'就是質數。 – EOF
製作到目前爲止發現的每個素數的列表或數組。只能測試它們作爲除數。如果'6'是一個除數,如果它已經通過'2'和'3'作爲除數,那麼沒有必要進行測試。 –
查看Eratosthenes的篩子。您可以基於此構建更高效的算法。 –