假如用0代表打开门,那么第一个人进来就把门全部打开
第二个人进行找他的倍数进行相反操作,也就是关闭
第三个人进来找他的倍数
第四个人进来找他的倍数
大概的规律就是这样的
所以也就是说只要每次进来判断他的倍数就好了,取相反的操作
#include <iostream>
using namespace std;
int n,door[10005]
int main(){
cin >> n;
for (int i = 2; i <=n; i++){
for(int j = 1; j <= n; j++){
if (j % i == 0){
if (door[j] == 0){
door[j] = 1;
}else{
door[j] = 0;
}
}
}
}
for (int i = 1;i<=n;i++){
if(door[i] == 0){
cout<<i<<" ";
}
}
return 0;
}