Java8流来查找因子的数量
我陷入了下面的问题,无法使用Java 8-streams找到给定数字的因子数。在以codechef提交解决方案时,其中一个子任务被接受,但所有其他子任务都抛出了一个NZEC,而该解决方案未被接受。 我尝试将代码包装在try/catch块中,但仍然将NZEC作为输出Java8流来查找因子的数量,java,java-8,runtime-error,Java,Java 8,Runtime Error,我陷入了下面的问题,无法使用Java 8-streams找到给定数字的因子数。在以codechef提交解决方案时,其中一个子任务被接受,但所有其他子任务都抛出了一个NZEC,而该解决方案未被接受。 我尝试将代码包装在try/catch块中,但仍然将NZEC作为输出 import java.util.Scanner; import java.util.stream.Stream; public class Main { public static void main(String[] a
import java.util.Scanner;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int testCases = scanner.nextInt();
while (--testCases >= 0) {
int nValue = scanner.nextInt();
int product = 1;
while (nValue-- != 0) {
int currentVal = scanner.nextInt();
product *= currentVal;
}
int prod = product;
System.out.println(Stream.iterate(2, x -> x + 1).limit(prod / 2).filter(num -> prod % num == 0).count() + 2);
}
}
}
我对竞争性编码非常陌生,无法解决上述代码的问题。请帮助……一些可能导致问题的事情:
- 对
产品
使用
可能会溢出(超过int
),尤其是在相乘时。这可能会导致整数.MAX_值
产品的值为负值,从而为负
提供限制()
。您应该切换到IllegalArgumentException
long
- 限额应为
Math.ceil(sqrt(产品))
- 您不应该在进行乘法运算,计算单独的
的因子并合并结果要快得多currentValue