一个整数分为若干个连续整数之和(使用java实现)
2018-09-09 本文已影响1人
倾尽一生浅笑繁花落尽
题目描述:
要求写出所有连续的正整数序列,使其之和等于90,小明灵光一闪,立马写上了29,30,31,
他看到解释说明台式告知答案不止一种,过了好一会,他总算算出了所有的5种答案
给你一个正整数Num,请输出所有连续的递增(+1)的正整数序列,使其之和等于Num,如不存在则输出NULL
例如输入:90
输出:[2,3,4,5,6,7,8,9,10,11,12,13]
[6,7,8,9,10,11,12,13,14]
[16,17,18,19,20]
[21,22,23,24]
[29,30,31]
java代码:
import java.util.ArrayList;
import java.util.List;
public class Demo5 {
public static void main(String[] args) {
int number =90;
Demo5 demo =new Demo5();
demo.printNum(number);
}
public void printNum(int num) {
int sum =0;
for (int i =0; i < num /2; i++) {
for (int k =1; ; k++) {
sum = (k +1) * (2 * i + k) /2;
if (sum > num)
break;
if (sum == num) {
List list =new ArrayList();
for (int j =0; j <= k; j++) {
list.add(i + j);
}
System.out.println(list);
}
}
}
}
}