gpt4 book ai didi

java - Java中数字的最大质因数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:59 25 4
gpt4 key购买 nike

我在解决这个问题时试图找到一个数的最大质因数 here .我认为我做的一切都是对的,但是其中一个测试用例(#2)失败了,我想不出任何可能失败的角落案例。这是我的代码,请看看并尝试发现一些东西。

public class ProblemThree
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
for (int i = 0; i < T; i++)
{
System.out.println(largestPrime(scanner.nextLong()));
}
}

private static long largestPrime(long n)
{
while (n % 2 == 0)
{
n = n / 2; // remove all the multiples of 2
}
while (n % 3 == 0)
{
n = n / 3; // remove all the multiples of 2
}

// remove multiples of prime numbers other than 2 and 3
while (n >= 5)
{
boolean isDivisionComplete = true;
for (long i = 5; i < Math.ceil(Math.sqrt(n)); i++)
{
if (n % i == 0)
{
n = n / i;
isDivisionComplete = false;
break;
}
}
if (isDivisionComplete)
{
break;
}
}
return n;
}
}

基本上,我正在做的是:

Largest_Prime(n):
1. Repeatedly divide the no by any small number, say x where 0 < x < sqrt(n).
2. Then set n = n/x and repeat steps 1 and 2 until there is no such x that divides n.
3 Return n.

最佳答案

您的代码中似乎有一些错误,例如当您输入 16 largestPrime 函数返回 1 时。当输入是 3 的幂时,这是正确的。

关于java - Java中数字的最大质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34353648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com