Project Euler每帖一题(006)

本文探讨了前一百个自然数的平方和与和的平方之间的差异,并提供了两种Python实现方式:一种通过循环计算,另一种利用数学公式简化计算过程。
题目:
[quote]
The sum of the squares of the first ten natural numbers is,

12 + 22 + ... + 102 = 385
The square of the sum of the first ten natural numbers is,

(1 + 2 + ... + 10)2 = 552 = 3025
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
[/quote]

我的python代码:

sum_sq = 0
sq_sum = 0
for i in range(100):
sum_sq += (i + 1) ** 2
sq_sum += (i + 1)
print sq_sum ** 2 - sum_sq


看了别人写的,看来把它化简成公式更简单:
[quote]
(1 + 2 + ... + n)^2 = n^2 * (n+1)^2 * 1/4

1^2 + 2^2 + ... + n^2 = n * (n+1) * (2n+1) * 1/6
[/quote]


code:

sum_sq = 0
sq_sum = 0
n = 100
sum_sq += n * (n + 1) * (2 * n + 1) / 6
sq_sum += ((n ** 2) * (n + 1) ** 2) / 4
print sq_sum - sum_sq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值