参考于
http://blog.csdn.net/huang_miao_xin/article/details/51331710
import java.util.Arrays; import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); // 打印2-num之间的所有素数的数组 System.out.println(Arrays.toString(newPrime_2(num))); sc.close(); } public static int[] newPrime_2(int num) { int[] arr = new int[10000]; // 处理2和3 arr[0] = 2; arr[1] = 3; int cnt = 2; // 设置外循环的名称 MAIN_LOOP: for (int i = 5; i < num; i++) { // 如果数字不在6的两侧,则继续外循环 if (i % 6 != 1 && i % 6 != 5) continue MAIN_LOOP; // 取i的平方根 int temp = (int) Math.sqrt(i); for (int j = 5; j <= temp; j += 6) { // 当6的倍数两侧如果能被整除,则继续外循环 if (i % j == 0 || i % (j + 2) == 0) continue MAIN_LOOP; } // 将素数值记录进数组 arr[cnt++] = i; } // 返回长度为cnt的新的素数数组 return Arrays.copyOf(arr, cnt); } }