尼克彻斯定理即任何一个整数的立方都可以写成一串连续奇数的和。例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
5^3=21+23+25+27+29
定义函数Nicoqish(x)返回和为x的连续奇数的第一个和最后一个值,某一个数可能可以写成多组连续奇数和,只要求返回起始奇数最小的那一组信息。在主模块中输入数据n调用函数输出前n个数相关的式子。
输入
一个[1,20]之间的整数n
输出
[1,n]范围内的整数相关的多行式子
这个如何递归呢?感觉都不是很简便~
def Nicoqish(x):
k = x**3 # 数字的三次方
i = 1 # 奇数
while i <= k:
s = 0 # s是这些奇数的和,必须从0开始
j = i # j>=i
while s<=k: # 奇数的和要小于等于整数的三次方
s += j
if s==k:
return i,j # i是起始位置,j是结束位置
j += 2 # 必须是奇数,要加2
i+=2
if __name__=='__main__':
n = int(input())
print('i^3=1')
for i in range(2, n+1):
result = Nicoqish(i) # print(result)
print('{}^{}='.format(i,3),end='')
print('+'.join(map(str, range(result[0], result[1]+2, 2)))) # 要包括result[1],所以范围要加个2