【发布时间】:2016-05-31 02:25:37
【问题描述】:
我为 Project Euler 的第二个问题编写了以下程序,针对问题:“Project Euler #3: Largest prime factor”。它应该打印出所提供输入的所有最高素因数。
import java.util.Scanner;
public class euler_2 {
public static boolean isPrime(int n) {
if (n % 2 == 0) return false;
for (int i = 3; i * i <= n; i += 2) {
if (n % i == 0)
return false;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
for (int i = 0; i < a; i++) {
int b = sc.nextInt();
for (int j = b; j >= 1; j--) {
boolean aa = isPrime(j);
if (aa == true && b % j == 0) {
b = j;
break;
}
}
System.out.println(b);
}
}
}
我可以对程序进行哪些更改以使其更快地执行?对于这个问题有什么更好的算法?
【问题讨论】:
-
你能告诉我们任何尝试吗?
-
@Leo 他的第一次尝试还不够吗?
标签: java algorithm primes execution-time