有n盞燈,編號為1~n,第1個人把所有燈打開,第2個人按下所有編號為2 的倍數的開關(這些燈將被關掉),第3 個人按下所有編號為3的倍數的開關(其中關掉的燈將被打開,開著的燈將被關閉),依此類推。一共有k個人,問最后有哪些燈開著?輸入:n和k,輸出開著的燈編號。k≤n≤1000
#include<stdio.h> int main() { int n,k,i,j,f[1001]; scanf("%d%d",&n,&k); for(i=1;i<=n;++i) f[i]=1; for(i=2;i<=k;++i) { for(j=i;j<=n;j+=i) f[j]=f[j]*-1; } printf("1"); for(i=2;i<=n;++i) if(f[i]==1) printf(" %d",i); printf(" "); return 0; }