當前位置:編程學習大全網 - 編程軟體 - 編程題:輸入壹個正整數,若該數能用幾個連續正整數之和表示,則輸出所有可能的正整數序列。

編程題:輸入壹個正整數,若該數能用幾個連續正整數之和表示,則輸出所有可能的正整數序列。

解題思路:假設正整數 n 能表示為 i 個連續正整數之和且其第壹個數為 x,則 n = x * i + (i - 1) * i/2,其中 n, x, i 都為正整數,所以如果 x = (n - (i-1)*i/2) / i 為正整數,則 n 就能表示為i個連續正整數之和。i 的取值範圍為2-n/2 +2。

Python答案:

# !/usr/bin/env python

# -*- coding: utf-8 -*-

def foo(n):

for i in range(2, n/2 + 2):

if ((n - (i-1)*i/2) % i) == 0:

x = (n - (i-1)*i/2) / i

print '%d = ' % n,

for j in range(i):

print x + j,

print '\n'

break

else:

print 'cant'

foo(3)

foo(5)

foo(8)

foo(10)

foo(28)

foo(37)

foo(66)

foo(88)

foo(136)

foo(1024)

foo(5050)

  • 上一篇:激光切割機的控制系統與數控機床的控制系統相同嗎?
  • 下一篇:matlab GUI-如何給GUI界面添加背景圖片
  • copyright 2024編程學習大全網