有没有办法在C中轻松测试所选数字是否为素数?
答案 0 :(得分:14)
最简单的方法是编写循环,例如:
int is_prime(int num)
{
if (num <= 1) return 0;
if (num % 2 == 0 && num > 2) return 0;
for(int i = 3; i < num / 2; i+= 2)
{
if (num % i == 0)
return 0;
}
return 1;
}
然后,您可以优化它,迭代到floor(sqrt(num))
。
答案 1 :(得分:3)
答案 2 :(得分:3)
最快的方法是预先计算你感兴趣的范围内所有可能整数的位数组(表示素数/非素数)。对于32位无符号整数,这只是512M,将很容易适应现代地址空间(即使它没有,它将是一个快速的文件查找)。
这几乎肯定会比每次通过筛子计算速度更快。