询问代码的问题必须证明对所解决问题的理解程度最低。包括尝试的解决方案、为什么不起作用以及预期的结果。另请参见:堆栈溢出问题检查表
public class Problem_3 {
public static void main(String... args) {
long limit = 600851475143L;
long largestPrimeFactor = 0;
for (long number = 2; number < limit; number++) {
if (isPrime(number)) {
if ((limit % number == 0)){
largestPrimeFactor = number;
}
}
}
System.out.println(largestPrimeFactor);
}
public static boolean isPrime(long number) {
for (int i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
我敢肯定,上面的程序不是无限循环的。我用limited=13195;
进行了测试,得到了想要的结果29
我不明白为什么我的CPU要花很长时间来运行它。
编辑:ProjectEuler的我的代码。网络问题3。
这就是原因。
long limit = 600851475143L;
一个O(n^2)算法,n是这个长数字
代码的时间复杂度为O(N^2)。所以对于大数来说,这不是一个好的算法。一个可能的建议如下——
你对最大的素数感兴趣,那么为什么不从最大的值开始呢?
for (long number = limit-1; number > 1; number--) {
if (isPrime(number)) {
if ((limit % number == 0)){
largestPrimeFactor = number;
break;
}
}
}
虽然时间复杂度保持不变,但这肯定会比当前的算法减少时间。
但是,什么是时间复杂度...??你是如何计算的...??什么是O(N^2)??请解释
for (long number = 2; number < limit; number++)
以上是您的第一个for循环,您将在其中进行n次迭代。在这个函数中,您调用了isPrime()函数,该函数中又有一个for循环(int i=2;i
您的算法的时间复杂度为O(n^2),因此对于较大的极限值,它不是非常有效。
所以它很慢,因为你使用的算法很差。
我知道要冬眠。我有一个sql语句 我尝试用createCriteria和HQL实现它。 HQL: 问题是,此HQL的执行时间延长了10倍。并执行许多不必要的查询。我尝试使用注释字符串进行转换,它有了一些改进,但仍然比createCriteria查询长5倍,此外,我无法进行此转换 <代码>列表 版本数据防御
我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语
没有一个参数帮助我们在较短的时间内解决查询。
我有一个Java ExecutorService(固定线程池1),我将可运行的任务传递给它以供将来执行。每个任务通常在10秒内完成。Executor服务只是简单地完成任务。如果我关闭应用程序,我会运行以下程序:; 问题是它似乎需要一段时间才能关闭,有时可能需要几分钟,有时它似乎永远不会关闭,有时它会在几秒钟内关闭!在执行器队列中的任何时候都可能有大约2000个任务,但我只是希望它完成当前正在执行的
给出结果需要20多秒,而在mongo控制台中同样的查询需要不到一秒。 为什么会出现这种情况,如何减少速度差距?
我有以下PHP代码在Laravel正在执行一个MySql查询: 执行此查询需要很长时间。 我对所排序的列以及其他查询的许多列都有索引。 我该怎么办? 更新: 执行的查询: 结果: