【发布时间】:2018-03-22 17:25:41
【问题描述】:
我创建了一个查找素数的函数,但该过程需要很长时间并且占用大量内存。我需要通过提高时间和内存效率来优化我的代码。
函数分为两部分:
第一部分计算奇数,第二部分是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;
}
}
【问题讨论】:
-
欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topic 和 how to ask 在这里申请。你只是把一个家庭作业问题抛给了我们。我们不知道您的问题是什么。
-
这种方法不吃内存。如果您想用速度换取内存,请考虑 Eratosthenes 筛
-
我需要关于如何更改代码的建议,对我来说,速度和乐趣消耗的内存
-
@Jack 谢谢,明白了。前面介绍过,而不是划分根。并在循环之前插入它