自学Python:验证尼科彻斯定理
尼科尼科彻斯定理是什么?
彻斯定理可以叙述为“任何一个整数的立方都可以表示成一串连续的奇数的和”。
根据尼科彻斯定理的叙述举例如下:
3^3=7+9+11=27
4^3=13+15+17+19=64
5^3=21+23+25+27+29=125
想要用程序验证,可以按照下面的思路。
先计算任意输入数n的立方,然后从奇数1开始进行累加,每次加2以保证下一个数也是奇数,如果累加和超过n的立方,则再进行下一次尝试,即从3开始进行累加,如此进行下去,直到找到一串连续的奇数,它们的和等于n的立方。
下面直接上代码:
########################
if __name__ == "__main__":
sum = 0 # sum变量存放奇数的累加和,初值为0
n = int(input("请输入大于1的n值:"))
if n <= 1:
print("输入的n值有误")
exit()
cube = n * n * n # cube存放n的立方,也可以写成cube = n ** 3
i = 1# 外层循环通过累加和来查找奇数序列
while i < cube:
j = i # 内层循环通过累加和来查找奇数序列
while j < cube:
sum += j
if sum == cube:# 找到了奇数序列
print("%d = %d + %d + ... + %d" %(cube, i, i+2, j))
if sum > cube:# 没找到,退出内层循环,返回外层for循环
sum = 0 # 将sum重置为0,以便开始下次试探
break
j += 2
i += 2
########################
执行结果如下:
请输入大于1的n值:9
729 = 1 + 3 + ... + 53
729 = 73 + 75 + ... + 89
729 = 241 + 243 + ... + 245
只要执行结果里有一组就算成立。
________________END______________