プロジェクトオイラーの2番目の問題について、「Project Euler#3:最大の素因数」の問題について、以下のプログラムを書いた。提供された入力。Javaプログラムの実行時間を短縮
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
@レオは彼の最初の試みでは不十分ですか? –