我遇到了一个问题,这个问题会告诉我一个数字是否为质数。除了随机测试,我通过了所有的测试。我是一个入门级的开发人员,所以它可能不是很漂亮,但我希望帮助如何让这个通过测试,即使数字是"1008985750798“例如…
public static bool IsPrime(int n)
{
bool returnMe = true;
if (n% 2 == 0 || n % 3 == 0 || n <= 1)
{
returnMe = false;
}
if (n % 2 == 0 && n % 3 == 0)
{
returnMe = false;
}
if ( n == 2 || n == 3 || n == 7)
{
returnMe = true; 发布于 2019-10-18 05:29:16
虽然Program to find prime numbers展示了一个很好的、高效的实现,但我认为你想要的是更容易理解的东西。
这是一种天真的方法:
public static void Main()
{
for(uint i = 0; i < 1000; i++) {
if (IsPrime(i)) Console.Write($"{i},");
}
}
private static bool IsPrime(uint n)
{
if (n < 3) return false;
for (uint i = 2; i < n; i++)
if (n % i == 0) return false;
return true;
}如果你想快一点,让我们向维基百科寻求帮助。
/// <summary>
/// Tests the number for primality. It is a c# version of the pseudocode from
/// https://en.wikipedia.org/wiki/Primality_test
/// </summary>
private static bool IsPrime2(uint n)
{
// The following is a simple primality test in pseudocode using
// the simple 6k ± 1 optimization mentioned earlier.
// More sophisticated methods described below are much faster for large n.
if (n <= 3)
return n > 1;
if (n % 2 == 0 || n % 3 == 0)
return false;
uint i = 5;
while (i * i <= n)
{
if (n % i == 0 || n % (i + 2) == 0)
return false;
i = i + 6;
}
return true;
}https://stackoverflow.com/questions/58440903
复制相似问题