1. 程式人生 > >python 求和為正整數n的連續整數序列

python 求和為正整數n的連續整數序列

原文:http://bbs.chinaunix.net/thread-4191271-1-1.html

  1. n = 100
  2. s = range(1, n)
  3. d = [s[i:i+j] for i in range(len(s)) for j in range(1, len(s)-i+1) if sum(s[i:i+j]) == n]
  4. print d
 思路不錯,就是執行起來,如果數夠大,效率有點低,還能再改進改進嗎?
def N2S(n):
    x = int(n / 2) + 1 + 1
s = [0]
    r = []

    for i in range(1, x):
        s.append(s[-1
] + i) for i in range(1, x): k = n + s[i - 1] for j in range(i + 1, x): if s[j] < k: continue if s[j] == k: r.append(range(i, j + 1)) break for i in r: print(list(i)) N2S(15)