这是大学里算法设计与分析基础一节课上的一道经典题,正在思考中,现在还没有解出来就先分享出来吧~
这个也是算法中的一道经典题。
来了来了,下面是正确解法:
正确解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class Demo { public static void main(String[] args) { int n; Scanner sc = new Scanner(System.in); n = sc.nextInt(); sc.close(); int[] flag = new int[n + 1]; for(int i = 1;i<=n;i++) { for(int j = i;j<=n;j = j+i) { flag[j] = 1 - flag[j]; } } for(int i = 1;i<= n;i++) { if(flag[i] == 1) System.out.print(i + " "); } System.out.println(); answer_two(n); } public static void answer_two(int n) { int i; for(i = 1;i<=n;i++) { if(i * i <= n) System.out.print(i*i + " "); else break; } }
|