求自然数的平方和python_查找最大N,以使Python中前N个自然数的平方和不超过X

假设我们有一个给定的整数X,我们必须找到最大值N,以使前N个自然数的总和不超过值X。

因此,如果输入为X = 7,则输出将为2,因为2是N的最大可能值,对于N = 3,级数之和将超过X = 7所以,1 ^ 2 + 2 ^ 2 + 3 ^ 2 = 1 + 4 + 9 = 14。

为了解决这个问题,我们将遵循以下步骤-定义了一个函数sum_of_squares()。这将取N

RES:=(N *(N + 1)*(2 * N + 1))/ 6

返回资源

从主要方法中,执行以下操作-

低:= 1

高:= 100000

N:= 0

而低 - 高=,做高:=中-1

N:=中

低:=中+ 1

中间:=(高+低)/ 2

如果sum_of_squares(MID) -  = X,则

除此以外,

返回否

示例

让我们看下面的实现以更好地理解-def sum_of_squares(N):

res = (N * (N + 1) * (2 * N + 1)) // 6

return res

def get_max(X):

low, high = 1, 100000

N = 0

while low <= high:

mid = (high + low) // 2

if sum_of_squares(mid) <= X:

N = mid

low = mid + 1

else:

high = mid - 1

return N

X = 7

print(get_max(X))

输入值7

输出结果2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值