我是个新手。
所以我一直在做Euler项目的问题来提高我的java技能,我通过了前2个。我被第三个卡住了。上面写着:
”13195的质因数是5、7、13、29。
数字600851475143中最大的素因子是什么?"
我写了以下代码:
public class Exercise {
public static void main(String[] args) {
long a = 600851475143L;
long i = 1;
boolean isPrime = true;
long currentNum = 0;
while (i <= a) {
if (a % i == 0) {
for (long j = 1; j < a; j++) {
if (a == i || a % j == 0) {
isPrime = false;
} else {
currentNum = i;
}
}
}
i++;
}
System.out.println("the largest prime factor of " + a + " is " + currentNum);
}
}
它完全适用于较小的数字,如10,20,55,100,560523等,但当我输入一个很大的数字,如600851475143L,代码编译和运行,但什么都不会发生。
感谢任何帮助,谢谢!
public class Exercise {
public static void main(String[] r)
{
try{
long a = 600851475143L;
System.out.println("the largest prime factor of " + a+ " is " +largestPrimeFactor(a) );
}catch(Exception e)
{
e.printStackTrace();
}
}
public static int largestPrimeFactor(long number) {
int i;
long copyOfInput = number;
for (i = 2; i <= copyOfInput; i++) {
if (copyOfInput % i == 0) {
copyOfInput /= i;
i--;
}
}
return i;
}
}
试试这个
您有嵌套条件,其执行将跳转CPU。
while (i <= a) {// This condition will be executed 600851475143 times
if (a % i == 0) {
for (long j = 1; j < a; j++) {// This condition will be executed 600851475143 times
到目前为止,a=600851475143,代码将执行次。这就是为什么您看不到输出,因为CPU正忙于执行这么多条件。
您看到a=100的输出也是因为对于这个输入迭代次数=100*100
,这在任何现代机器上都不会花费太多时间
查看您的a
变量。它是600851475143L
。
这意味着您的处理器必须根据您的条件执行多达600851475143循环周期:
while (i <= a) {
i++;
}
我没有考虑到while()
循环中的代码,但即使没有它也太多了,即使对于现代计算机来说:)
如果你想计算该范围内数的质因数......你应该考虑使用一些比简单迭代更有效的方法。
我对龙目岛或月食有问题,不确定是哪一个。我有一个Spring Boot maven项目,我正在使用Lombok。我在pom中添加了这个。xml文件,我使用了用于eclipse的lombok安装。 发生的事情是,我可以对项目进行和以及maven更新,一切都按预期构建。一旦我去运行项目,错误就开始出现,我得到错误,例如: 在运行项目时,有什么事情可以让龙目岛脱颖而出吗?! 我正在运行Eclipse O
您都知道将依赖项放入pom.xml文件并运行“MVN clean Install”的过程。当这个命令运行时,依赖项的jar文件被下载到。m2存储库中。 当我们使用IntelliJ和run/debug配置窗口运行应用程序时,IntelliJ如何知道在哪里查找依赖项的jar文件?IntelliJ中的每个GUI操作实际上都取代了命令行操作。当我们单击“运行”按钮时,在“幕后”提交的命令行操作是什么。我相
我在一个类中有一个方法,该方法具有使用泛型指定的返回类型。 对于通用返回类型,我假设上面示例中的返回将评估为: 相反,被正确返回和打印。 如果我将调用更改为: 我错过了什么,以帮助我理解这里发生了什么,为什么原始版本没有导致编译错误。
在方法或类范围内,下面的行编译(带有警告): 在类作用域中,变量获取其默认值,以下给出未定义引用错误: 这难道不是第一个应该以相同的未定义引用错误结束吗?或者第二行应该编译?或者我错过了什么?
此代码可编译但不运行;当我试图运行这个程序时,它会给出一个。我做错了什么?