java把1~1000的素数和放进集合

java把11000的素数和放进集合
刚接触Java一星期,有人给我出道题,但是我解不出来,就是用for循环求出1
1000的质数,再丢到一个集合里,ArrayList集合

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {        
        List<Integer> list = new ArrayList<>(); 
        
        int n = 1000;
        
        for(int i = 2; i <= n; i++) {
            boolean flag = true;
            for(int j = 2; j < i; j++) {
                if(i % j == 0) {
                    flag = false;
                }
            }
            // 如果是素数则存入list中
            if (flag) {
                list.add(i);
            }
        }
        // 输出list中所有素数
        for(int i : list) {
            System.out.println(i);
        }
    }
}
    public static void main(String[] args) {
        final List<Integer> ls = IntStream.rangeClosed(2, 1000)
                .boxed()
                .filter(integer -> IntStream.rangeClosed(2, (int) Math.sqrt(integer)).noneMatch(j -> integer % j == 0))
                .collect(Collectors.toList());
        System.out.println(ls);
    }

你题目的解答代码如下:

/**
 * 
 * @author 三一
 * @time 2018-5-6
 * 
 */
public class Test {
    public static void main(String[] args) {
        int num[] = new int[1000]; // 保存1到1000所有的数
        int newNum[] = new int[1000]; // 存素数
        int temp = 0; // 素数的位置
 
        // 把1到1000所有的数存到数组中
        for (int i = 0; i < num.length; i++) {
            num[i] = i + 1;
        }
 
        // 把1到1000所有的数分别拿出来运算
        for (int i = 0; i < num.length; i++) { // 3
            boolean flag = true; // 标记是素数 默认把所有的数标记为素数
            // 排除1
            if (num[i] == 1) {
                continue;
            }
 
            // 求素数
            for (int j = 2; j <= num[i] / 2; j++) { // i=5
                // 如果这个数有一次能被整除就不是素数
                if (num[i] % j == 0) {
                    flag = false; // 不是数组
                    continue;
                }
            }
 
            // 是素数
            if (flag) {
                newNum[temp] = num[i];
                temp++; // 3
            }
        }
 
        // 循环输出素数
        for (int i = 0; i < newNum.length; i++) {
            if (newNum[i] == 0) {
                break;
            }
 
            if (i % 8 == 0 && i != 0) {
                System.out.println();
            }
 
            System.out.print(newNum[i] + "\t");
        }
    }
}

如有帮助,望采纳!谢谢!