对微软面试题目的答案的否定

2025-06-27 02:42:16
推荐回答(4个)
回答1:

微软的答案是正确的,我是这么想的:既然灯一开始是开着的,那么要使灯关上,必须经过奇数次开关,所以这个灯的号数应该有奇数个约数(包括1和本身),那么我们发现就算是奇数个约数,比如有五个约数的在这(大于1小于等于100)范围内的最小数:1*2*3*4*5=120>100,所以约数个数小于5,所以约数个数只有两种情况,即:有1个约数(只有1),或有3个约数。所以三个约数的数N,必定有1和N这两个约数,那么中间的约数一定是约数N的因数(且不为1),所以不妨设中间的约数是m,N=nm,那么如果m不等于n,这个数的约数个数就有了4个,所以与奇数个约数不符,因此只有一种可能,即N=m^2(意思是N=m的平方)所以,这个数必定是个平方数(大于1小于等于100的平方数)。因此,所有的关闭的灯有:1,4,9,16,25,36,49,64,81,100这10中情况,其余的灯都是开着的。
这就是我的观点,希望大家参考,有错误请指出,谢谢。

回答2:

题目的意思是这样的:刚开始灯全部是开的,凡是1的倍数反方向拨一次开关,因为1-100都是1的倍数,所以灯又全部关了.
接着就是看1-100中哪个是2的倍数,哪个就再反方向拨一次开关.
然后又看1-100哪个是3的倍数,哪个就再反方向拨一次开关
......哪个是4的倍数,......
以此类推......

首先,在1-100编号的中,凡是质数号的灯都是开的, 因为它只是1和自己的倍数,拨动两次.
我们可以这样判断:具有偶数个约数的灯是开的.奇数个约数的则关.
而奇数个约数的数恰是1,4,9,16,25,36,49,64,81,100即是说这几号灯最后都是关的
其实我们不用怎么计算,上面那些数分别是1,2,3,4......的平方.为什么是这样呢?
举个例子:36=1*36=2*18=3*12=4*9=6*6
在1-36中,6的两旁总有两个不同的数(如4和9,3和12)相乘等于36,而这两个数刚好可以执行两次反向拨动,然后抵消.
而6则有点多余出来的味道,于是36属于有奇数个约数的数.
然而,除了1-10它们各自的平方外,剩下的数都是有偶数个约数的.为什么?同样的道理,因为它们不可能是某个整数x的平方,而只能是某个小数X的平方.我们可以假如,某个数A是小数X的平方,X的两旁也总存在两个不同的整数(就像上面那种形式)相乘等于这个数A,这两个约数总与X成"对称"关系,而X又不是整数,所以数A不会像36多出个整数6那样的约数.于是这个数A就是具有偶数个约数的了.同理,其他数的开根不是整数而是小数的,都是偶数个约数.

所以也就只有上面灯号是那10个数的灯是关的~~
(其实如果存在疑问,就把数像36那样分解一下,就会发现其原理了.)

回答3:

“凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关。。。。。。 ”
不是后面还有省略号吗,所以4的倍数,5的倍数都要如此操作,直至100的倍数,(当然从51的倍数开始,每次就只操作一盏灯就够了)
这样这道题就不简单了吧

回答4:

楼主,你只做到3了,还有4的倍数呢,4就息了,6的倍数时6就开了,以此类推,你没算完。