document.write('
(1)对于每盏灯,当拉动的次数是奇数时,灯就是亮着的,当拉动的次数是偶数时,灯就是关着的。
(2)每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。
(3)1~100这100个数中有哪几个数,约数的个数是奇数?
我们知道,一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个。
所以,这100盏灯中有10盏灯是亮着的,它们的编号分别是:1、4、9、16、25、36、49、64、81、100。
下面是程序的实现:
def factorIsOdd(a):
total=0
i=1
while i<=a:
if a%i==0:
total+=1
i+=1
if total%2==1:
return 1
else:
return 0
def totalCount(num,n):
count=0
i=0
while i<n:
#∥判断因子数是否为奇数, 如果是奇数(灯亮), 那么加1
if factorIsOdd(num[i])==1:
print "亮着的灯的编号是:"+str(num[i])
count+=1
i+=1
return count
if __name__=="__main__":
num=[None]*100
i=0
while i<100:
num[i]=i+1
i+=1
count=totalCount(num,100)
print "最后总共有"+str(count)+"盏灯亮着。"
程序的运行结果为:
亮着的灯的编号是:1
亮着的灯的编号是:4
亮着的灯的编号是:9
亮着的灯的编号是:16
亮着的灯的编号是:25
亮着的灯的编号是:36
亮着的灯的编号是:49
亮着的灯的编号是:64
亮着的灯的编号是:81
亮着的灯的编号是:100
最后总共有10盏灯亮着。
');