我创建了一个查找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;
}
}
答案 0 :(得分:0)
您正在检查所有可能的除数与您的for (int i = 2; i <= koren; i++)
浪费时间。你只需要检查奇数除数所需的时间就可以减半。您知道给定的数字N
是奇数,因此偶数不能是除数。请改为for (int i = 3; i <= koren; i+=2)
。