【发布时间】:2020-08-08 22:43:44
【问题描述】:
我需要编写一个简单的程序来打印素数直到给定的数字,但不超过 5 秒。 是否有某种计时器可用于在一段时间后中断方法? (但如果打印时间短于 5 秒,则不会中断)。 提前致谢。
我的代码:
public class Primes {
private static boolean checkIfPrime(int x) {
if (x == 2) return true;
if (x % 2 == 0) return false;
int sqrt = (int) Math.sqrt(x) + 1;
for (int i = 3; i < sqrt; i = i + 2) if (x % i == 0) return false;
return true;
}
private static void printPrimesAndOperationTime(int n) {
long start = System.nanoTime();
for (int i = 2; i <= n; i++) if (checkIfPrime(i)) System.out.println(i);
long end = System.nanoTime();
long timeResult = end - start;
System.out.println("Printing time = " + timeResult + " [ns] => "
+ Math.round(timeResult * 100.0 / 1000000) / 100.0 + " [ms]");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
printPrimesAndOperationTime(n);
}
}
【问题讨论】:
-
嗨@Pawel,此链接将帮助您实现同样的目标:stackoverflow.com/questions/2029118/…
-
添加了正确版本的代码。请检查@Pawel
标签: java interruption