对于灯泡 i,它的最终状态取决于 i 的因子个数,因子个数为奇数时,最终为开灯状态。所以该题可以转化为:求小于等于 n 的正整数中,因子个数为奇数的的数量。
对于整数 k,因子个数为 n,因子集合为 {F1...F2⌊n⌋...Fn},如果因子个数为奇数,则有 F2⌊n⌋∗F2⌊n⌋=k, F1∗Fn=F2∗Fn−1=...=F2⌊n⌋∗F2⌊n⌋=k。则 k 一定是一个完全平方数。所以该题可以转化为:求小于等于 n 的完全平方数的个数。
接下来求小于等于 n 的完全平方数的个数。
观察到完全平方数序列 12,22,32,42...m2,其中 m2≤n≤(m+1)2,很容易得出小于等于 m2 的完全平方数的个数是 m 个,即 ⌊n⌋。