我怎样才能知道一个数是否是C#素数?
我遇到了一个问题,这个问题会告诉我一个数字是否是素数。除了随机测试外,我通过了所有测试。我是一个入门级的开发人员,所以它可能不好看,但我想帮助你如何让它通过测试,即使数字是“1008985750798”,例如我怎样才能知道一个数是否是C#素数?,c#,C#,我遇到了一个问题,这个问题会告诉我一个数字是否是素数。除了随机测试外,我通过了所有测试。我是一个入门级的开发人员,所以它可能不好看,但我想帮助你如何让它通过测试,即使数字是“1008985750798”,例如 public static bool IsPrime(int n) { bool returnMe = true; if (n% 2 == 0 || n % 3 == 0 || n <= 1) { returnMe = false;
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;
公共静态bool IsPrime(int n)
{
bool returnMe=true;
如果(n%2==0 | | | n%3==0 | | nWhile显示了一个好的、高效的实现,我想您想要的是更容易理解的东西
以下是一种天真的方法:
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;
}
publicstaticvoidmain()
{
对于(uint i=0;i<1000;i++){
if(IsPrime(i))Console.Write($“{i},”);
}
}
私有静态bool IsPrime(uint n)
{
如果(n<3)返回false;
对于(uint i=2;i
如果你想更快一点,让我们向维基百科寻求帮助
/// <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://en.wikipedia.org/wiki/Primality_test
///
专用静态bool IsPrime2(uint n)
{
//下面是一个简单的伪代码素性测试,使用
//前面提到的简单6k±1优化。
//下面描述的更复杂的方法对于大型n。
if(n1;
如果(n%2==0 | | n%3==0)
返回false;
uint i=5;
虽然(我*如果您想要更大的值,我会使用long
甚至biginger
。int
最多只能处理2^31-1…大约20亿。请阅读有关如何调试代码的提示。您将无法将该数字传递给IsPrime
。请将随机数限制为int
的有效值(介于int.MinValue
和int.MaxValue
之间)。