题目:
在走廊上有n个带锁的门,从1到n依次编号。最初所有的门都是关着的。我们从门前经过n次,每一次都是从1号门开始。在第i次经过时(i = 1, 2, ..., n)我们改变i的整数倍号锁的状态:如果门是关的,就打开它;如果门是开的,就关上它。在最后依次经过后,哪些门是打开的,那些门是关上的?有多少打开的门?
分析:
一开始门都是锁着的,所以一个门只有奇数次切换状态的时候才会被打开。在第j次(1<= j <= n)走过时,第i(1 <= i <= n)个门会被改变只有当i能被j整除时,即i是j的整数倍。因此,第i个门改变状态的次数就等于它的所有除数的数目。那么,当最后次经过后,奇数个除数的门是打开的,偶数个除数的门是关闭的。
这里要特别注意,如果i能被j整除,如i = jk,那么i也能被k整除,即他们是一对,是偶数次除数数目(比如i = 12,那么它的除数就是(1, 12), (2, 6), (3, 4), 都是成对出现的)。那么什么情况下i会有奇数个除数呢?答案就是当i为平方数的时候(比如 i = 4, 那么i的除数就只有3个,1, 2, 4)。
因此,我们求出
,即可得到想要的答案。
答案:
1~
的所有整数的平方数对应的编号的门是打开的,剩下的就是关上的。有
个打开的门。