我们确实在追踪某些东西。奇数之和与平方数有关吗?看起来是这样,但这也可能是一个奇怪的巧合。
为了确保,让我们思考一下构成平方数的要素。
点击进度条Bar,看它们是如何增长的。
每次方块的大小增加,都会在旧方块上添加一个新的层。
每个新层中的方块数量是奇数还是偶数?这些层是上面方块的绿色、绿色、蓝色、蓝色和紫色部分。
奇数 没错!
它总是奇数。你能理解为什么吗?
为了制作更大的方块,我们首先需要在顶部和侧面添加相同数量的方块。综合起来,这使得新方块的数量是偶数,因为可以平均分成两半。
最后,我们再添加一个角块,这使得新层的总和是奇数。
1-10之间自然数的平方,列表推导式如下:
n = 10
#平方数
nseq = [i**2 for i in range(n)]
print(nseq)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
上面的输出比较奇数求和可见:
#奇数求和
prev,ans = [],[]
for i in range(n):
prev.append(i*2 + 1)
ans.append(sum(prev))
print(prev)
print(ans)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
编程实现了两种思路求平方数。验证了10以内的满足假设。
数学的求证则要证明任意自然数 n 都满足假设:
n ** 2 = 1 + 3 + ... + 2*n-1
本文的开始就用无字证明或图证明了上述假设成立。
最后,我们看高斯法也很快能证明上述假设:
首尾两端相加,发现都等于: 1 + 2n-1 = 2n,剩下就只需算出共有多少对相加等于 2*n ? 问题转换为 n 以内有多少个奇数?
显然 n 是偶数时,奇数的个数是 n / 2; 那么,n / 2 个奇数的和是:
(n / 2) * 2 * n = n ** 2 (证明假设成立)
n 是奇数时,奇数的个数是 (n - 1)/2 + 1
(n - 1)/2 * (2 * n) + n = n * (n-1) + n = n**2
证明完毕!
您喜欢哪种证明方式,或者你有更有趣的方法证明之,请回复我们。
本文由 mdnice 多平台发布