作为初学者,我编写了一个程序,用于查找不高于输入自然数(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的筛子。您可以基于此构建更高效的算法。 –