开关灯问题
现在有X盏灯都是关闭着的,每次先打开1的倍数的灯,再关闭二的倍数的灯,再打开3的倍数的灯,再关闭4的倍数的灯……直到打开X的倍数的灯!
一开始想的是遍历,然而其实这个问题有一个特别简单的方法。
任何一个数都可以看作两个数相乘(质数可以看作1乘以它本身),也就谁说X=A*B,那么他就在A时打开,B时关闭了,当A==B时,就只开未关闭,所以,开着的灯是X以下的所有平方数,1,4,9……
现在有X盏灯都是关闭着的,每次先打开1的倍数的灯,再关闭二的倍数的灯,再打开3的倍数的灯,再关闭4的倍数的灯……直到打开X的倍数的灯!
一开始想的是遍历,然而其实这个问题有一个特别简单的方法。
任何一个数都可以看作两个数相乘(质数可以看作1乘以它本身),也就谁说X=A*B,那么他就在A时打开,B时关闭了,当A==B时,就只开未关闭,所以,开着的灯是X以下的所有平方数,1,4,9……