这是大学里算法设计与分析基础一节课上的一道经典题,正在思考中,现在还没有解出来就先分享出来吧~ 这个也是算法中的一道经典题。
来了来了,下面是正确解法:
正确解法
代码语言:javascript复制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;
}
}