有n盏灯,编号为1~n,第一个人把所有灯都打开,第2个人按下所有编号为2的倍数的开关(这些灯将会被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),一次类推,一共有k个人,问最后那些灯开着?
#include <stdlib.h> #include<string.h> #include <math.h> int main() {int a[100],n,visited[100],i,k,j;scanf("%d%d",&n,&k);memset(a,0,sizeof(a)); //0电表关着的for( i=1;i<=k;i++){for(j=1;j<=n;j++){if(j%i==0){a[j]=!a[j];}}}for(i=1;i<=n;i++){if(a[i]!=0)printf("%d " ,i);}return 0; }