Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎样才能知道一个数是否是C#素数?_C# - Fatal编程技术网

我怎样才能知道一个数是否是C#素数?

我怎样才能知道一个数是否是C#素数?,c#,C#,我遇到了一个问题,这个问题会告诉我一个数字是否是素数。除了随机测试外,我通过了所有测试。我是一个入门级的开发人员,所以它可能不好看,但我想帮助你如何让它通过测试,即使数字是“1008985750798”,例如 public static bool IsPrime(int n) { bool returnMe = true; if (n% 2 == 0 || n % 3 == 0 || n <= 1) { returnMe = false;

我遇到了一个问题,这个问题会告诉我一个数字是否是素数。除了随机测试外,我通过了所有测试。我是一个入门级的开发人员,所以它可能不好看,但我想帮助你如何让它通过测试,即使数字是“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;     
公共静态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
之间)。