给定一个整数n,求出所有连续的且和为n正整数。比如对于整数27,结果为2~7、8~10、13和14,因为这些数之间的整数的和都是27。注意:并不是所有的整数都有结果,例如不存在连续的整数和为16。为了提高计算的效率,程序所采用的算法如下:(1) 从1开始计算连续的整数和sum,直到sum不小于n为止;(2) 在第i步,如果sum=i+(i+1)+…+j比n大,则去掉连加的最左端的数i,如果sum比n小,在连加的右端加上一个数(j+1);(3) 如果和sum=i+(i+1)+…+j等于n,则i+(i+1)+…+j为一组解,输出该解,并将连加的右端加上(j+1);(4) 重复2,3步,直到i大于n/2为止。
2021-09-12 16:02:41
858B
源代码
1