如何实现IsPrime()函数

时间:2010-05-31 18:40:16

标签: c#

  

可能重复:
  Program to find prime numbers in C#
  prime numbers c#
  Most elegant way to generate prime numbers

嗨,大家好。

如何检查数字是否为素数?

4 个答案:

答案 0 :(得分:5)

这是我用来写任何时候我需要做的检查:

inline bool isPrime(const int a)
{
    if(a == 1) return false;
    if(a == 2 || a == 3) return true;
    if(!(a & 1)) return false;
    if(!((a + 1)%6 || (a-1)%6)) return false;
    int q = sqrt((long double)a) + 1;
    for(int v = 3; v < q; v += 2)
        if(a % v == 0)
            return false;
    return true;
}

由于一些有用的修剪,它的效果非常好。

答案 1 :(得分:2)

不知道它是否有标准功能,但您总是可以使用Sieve of Eratosthenes建立一个方法(链接:http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)。很容易实现。

答案 2 :(得分:0)

这里有几个c#版本:LTD Puzzle 4:Finding Prime Numbers 还有f#,c,JavaScript。 PHP等等版本

答案 3 :(得分:0)

如果它可以被1或它自身整除,那么它就是素数。您可以通过认识到除2之外的所有素数都是奇数,或者它可以被2整除来缩短测试次数。此外,5以上的所有素数都可以表示为6n + 1或6n-1,但并非所有数字都生成此方式是素数。此外,该数字的最大可能除数将是其平方根。这些事实足以使测试比你刚测试所有数字直到你要检查的数字更快。