C - 如果是素数,如何轻松测试?

时间:2011-03-12 09:47:19

标签: c

  

可能重复:
  C - determine if a number is prime

有没有办法在C中轻松测试所选数字是否为素数?

3 个答案:

答案 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)

您可以尝试使用Sieve of Eratosthenes:

http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

您可以轻松找到此算法的各种实现。

答案 2 :(得分:3)

最快的方法是预先计算你感兴趣的范围内所有可能整数的位数组(表示素数/非素数)。对于32位无符号整数,这只是512M,将很容易适应现代地址空间(即使它没有,它将是一个快速的文件查找)。

这几乎肯定会比每次通过筛子计算速度更快。