我试图确定一个数是否为素数或不使用循环。 以下是我到目前为止。我的争吵是,我不知道这是否会涵盖所有可能的输入值。获取没有循环的素数
bool isPrime(int Value)
{
if ((Value % 2 == 0) || (Value % 3 == 0) || (Value % 5 == 0) || (Value % 7 == 0))
return false;
else
return true;
}
我试图确定一个数是否为素数或不使用循环。 以下是我到目前为止。我的争吵是,我不知道这是否会涵盖所有可能的输入值。获取没有循环的素数
bool isPrime(int Value)
{
if ((Value % 2 == 0) || (Value % 3 == 0) || (Value % 5 == 0) || (Value % 7 == 0))
return false;
else
return true;
}
这绝对不会涵盖素数的全部范围。您目前正在检查您的输入是否除以4个素数。为了确保你的数字是素数,它必须不能被任何其他素数整除(13,17,23等)。循环的另一个更糟糕的选择是递归,但我没有理由认为你应该使用后者。
如果你可以定义可能的输入的东西的范围,说非零整数低于100,则这样的事情可能是最简单的解决方案
int[] primes = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 } ;
bool isPrime(int Value)
{
return primes.Contains(Value);
}
将无法正常工作对于11 –
您可以尝试生成一个[prime sieve](http://en.wikipedia.org/wiki/Generating_primes)然后探究它,但我认为生成sieve本身会违反您的非循环要求。 – LB2
确实为11-工作 - 将返回true,因为这些数字都不会分成11. –