苹果的面电灯泡试题,手算有什么比较快的方法

苹果的面灯泡试题,手算有什么比较快的方法?有100盏灯,编了序号1-100,全部打开,然后:(1)编号为2的倍数的灯,

苹果的面灯泡试题,手算有什么比较快的方法?
有100盏灯,编了序号1-100,全部打开,然后:
(1)编号为2的倍数的灯,开着的关上
(2)编号为2的倍数的灯,开着的关上,关着的打开
...
(3)编号为100的倍数的灯,开着的关上,关着的打开

这个问题如果自己编个小程序,很快就能算出答案是10

C/C++ code
int main(void){    int bubbles[100]={0};    for(int n=1;n<=100;++n){        for(int b=1;b<=100;++b){            if(b%n==0){                int idx=b-1;                bubbles[idx]=!bubbles[idx];            }        }    }    int ret=0;    for(int c=0;c<100;++c){        ret+=bubbles[c];    }    printf("%d\n",ret);    return 0;}


但是如果要手算,有没有比较好的方法能很快的算出答案呢? 谢谢!


[解决办法]
“(2)编号为2的倍数的灯,开着的关上,关着的打开”

应该是编号为3的倍数的吧?
[解决办法]
就是找100以内有奇数个因子(不算1和自己)的数的个数
好像没啥好办法
[解决办法]
100开平方根即可。因为平方数的因子个数为奇数。
[解决办法]
一个数可以分解为奇数个因子,必然为平方数,因此答案为10,1,4,9,16。。。。100是÷