优化素数的搜索

时间:2018-03-22 17:25:41

标签: c# algorithm primes

我创建了一个查找Prime数字的函数,但这个过程需要很长时间并占用大量内存。我需要通过提高时间和内存效率来优化我的代码。

该功能分为两部分:

第一部分计算奇数,第二部分是isSimple方法,用于搜索素数的奇数。

我通过将Math.Sqrt(N)移到for循环之外取得了一些进展,但我不确定下一步该做什么。

欢迎任何建议。

程序:

class Program
{
    static void Main(string[] args)
    {
        //consider odd numbers
        for (int i = 10001; i <=90000; i+=2)
        {
            if (isSimple(i))
            {
                 Console.Write(i.ToString() + "\n");
            }
        }
    }
  //The method of finding primes
    private static bool isSimple(int N)
    {
        double koren = Math.Sqrt(N);

         // to verify a prime number or not enough to check whether it is //divisible number on numbers before its root
        for (int i = 2; i <= koren; i++)
        {   
            if (N % i == 0)
                 return false;
        }
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

您正在检查所有可能的除数与您的for (int i = 2; i <= koren; i++)浪费时间。你只需要检查奇数除数所需的时间就可以减半。您知道给定的数字N是奇数,因此偶数不能是除数。请改为for (int i = 3; i <= koren; i+=2)

相关问题