Python实战演练——求1+2+3+....+n的值

要求1+2+3+....+n的值我们可以使用两种方法:

        第一种将它所有值加起来:

a=int(input())    #获取输入得到n的值
list=[i for i in range(1,a+1) if i >=1]
 #使用列表推导式得到从1到n的所有值(range函数括号是左闭右开所以要加一
print(sum(list))

但是这种方法的时间空间复杂度都是O(N)

        第二种使用数学公式:

        表达式 n * (1 + n) // 2 是计算前 n 个自然数之和的公式,这是一个等差数列求和公式。这里的 n 表示数列中的项数,1 + n 表示数列中的最大项(即第 n 项),而 // 是整数除法运算符,它返回两个数相除的整数部分。

def JIA():        #这里为我们定义了一个JIA函数用于计算和
    n = int(input())
    return n * (1 + n) // 2

b = int(JIA())
print(b)

这个程序的时间复杂度是 O(1),因为它直接使用公式计算和,不需要遍历任何序列。

空间复杂度是 O(1),因为它只使用了常数级别的额外空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值