700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python 正整数 连续多个数之和_[算法]正整数分解为几个连续自然数之和

python 正整数 连续多个数之和_[算法]正整数分解为几个连续自然数之和

时间:2020-01-17 23:33:16

相关推荐

python 正整数 连续多个数之和_[算法]正整数分解为几个连续自然数之和

题目:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。

一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:

15=1+2+3+4+5

15=4+5+6

15=7+8

有些数可以写成连续N(>1)个自然数之和,比如14=2+3+4+5;有些不能,比如8.那么如何判断一个数是否可以写成连续N个自然数之和呢?

一个数M若可以写成以a开头的连续n个自然数之和,则M=a+(a+1)+(a+2)+…+(a+n-1)=n*a+n*(n-1)/2,要求a!=0,否则就是以a+1开头的连续n-1个整数了,也就是要求(M-n*(n-1)/2)%n==0,这样就很容易判断一个数可不可以写成连续n个自然数的形式了,遍历n=2…sqrt(M)*2,还可以输出所有解。

void divide(int num)

{

int i,j,a;

for(i=2; i<=sqrt((float)num)*2; ++i)

{

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

{

a=(num-i*(i-1)/2)/i;

if(a>0)

{</

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。