【问题标题】:without Loops to Sum Range of odd numbers没有循环对奇数范围求和
【发布时间】:2020-11-18 12:58:27
【问题描述】:

有什么方法可以将 1 到 n 的奇数相加,但没有任何循环,如果没有办法,我如何通过快速算法在少于 n 个循环中完成此任务。

【问题讨论】:

标签: python algorithm performance optimization


【解决方案1】:

您可以利用算术系列中的求和来对第一个 n 奇数求和(而不是从 0n 的奇数)

a = 1 # from 1
n = 9999 # to n
d = 2 # and skip every even number
n = int((n - a) / d + 1) # locate the number of term for n
sum = int((n / 2) * (2 * a + (n - 1) * d))

时间复杂度:O(1),无循环

参考:Summing an Arithmetic Series

编辑:以适应 n 的情况,例如10000

if n % 2 == 0:
    n = n - 1 # to eliminate the case 10000 and find range 1-9999

【讨论】:

  • 这应该是正确的答案!我太喜欢编程了,我忘了数学是什么......??‍♂️
  • 注意如果n = 2k+1,则结果为(k+1)^2 (+1)
  • 我认为问题是求1n之间的概率之和,所以n可以是偶数。考虑到这一点,我建议编辑答案。
【解决方案2】:

试试这个 -

sum(range(1, n+1, 2))

【讨论】:

    【解决方案3】:

    你可以试试下面这个,从 1 循环到 n,步进 2

    sum(range(1,n,2))

    【讨论】:

      猜你喜欢
      • 2022-11-25
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2019-06-07
      • 1970-01-01
      相关资源
      最近更新 更多