如何实现IsPrime()函数

可能重复:
程序在C#中查找素数
素数c#
最优雅的方式来生成素数

嗨,大家好。

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

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

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; } 

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

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

这里有几个c#版本:LTD拼图4: 查找素数还有f#,c,JavaScript。 PHP等等版本

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