【面经】开关灯问题

1000盏灯关着,1000个人标号1~1000依次进入,每个人进去按一下自己标号倍数的开关,问最后哪些灯亮着。

答案:亮灯的编号为1000以内的完全平方数。

解析:其实这是一道数论题,我们知道

  • 开关按过的次数为其编号的所有因数的个数。
  • 由关到开,按过的次数为奇数次,说明有奇数个因子。
  • 所有因数的个数为奇数的自然数只有完全平方数。
原文地址:https://www.cnblogs.com/AC-AC/p/13928456.html