注意此题中把原先开着的灯打开,打开的灯关上,直接用flag[i*j]=!flag[i*j]就另外为了防止最后一个输出后面有空格,此处巧妙的设置了一个first;
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
#define LL long long
int main()
{
int n,k;
while(cin>>n>>k)
{
int first=1;
int flag[1005];
memset(flag,0,sizeof(flag));
for(int i=1;i<=k;i++)
{
for(int j=1;j*i<=n;j++)
{
flag[j*i]=!flag[j*i];
}
}
for(int i=1;i<=n;i++)
{
if(flag[i])
{
if(first) first=0;
else
printf(" ");
printf("%d",i);
}
}
}
return 0;
}