阿里巴巴开源的arthas是一个非常优秀的在线调试工具,为了方便学习者练习,提供了一个demo程序MathGame,并且发布在github中,不过呢,国内有时打不开,此时我们可以使用源码直接在我们的idea中启动,那该文件的源码是什么呢?
该代码非常简单,就是不断生成一个随机数,然后判断是不是素数。
完整如下所示:
import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.TimeUnit;public class MathGame {private static Random random = new Random();private int illegalArgumentCount = 0;public static void main(String[] args) throws InterruptedException {MathGame game = new MathGame();while (true) {game.run();TimeUnit.SECONDS.sleep(1);}}public void run() throws InterruptedException {try {int number = random.nextInt()/10000;List<Integer> primeFactors = primeFactors(number);print(number, primeFactors);} catch (Exception e) {System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());}}public static void print(int number, List<Integer> primeFactors) {StringBuffer sb = new StringBuffer(number + "=");for (int factor : primeFactors) {sb.append(factor).append('*');}if (sb.charAt(sb.length() - 1) == '*') {sb.deleteCharAt(sb.length() - 1);}System.out.println(sb);}public List<Integer> primeFactors(int number) {if (number < 2) {illegalArgumentCount++;throw new IllegalArgumentException("number is: " + number + ", need >= 2");}List<Integer> result = new ArrayList<Integer>();int i = 2;while (i <= number) {if (number % i == 0) {result.add(i);number = number / i;i = 2;} else {i++;}}return result;} }