1. 程式人生 > >2、找出所有和為S的連續整數集合

2、找出所有和為S的連續整數集合

們的 pri pan 定義 tint 集合 兩個 數學作業 port

題目要求:
小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為S的連續正數序列?
思路:定義l為首相,h為尾項,他們的和就是(l+h)*(h-l)/2,確定兩個指針分別為首相和尾項,首相一定小於和的一半,先不變,確定他們的和與所求和的關系。相等時輸出,然後令首相加一繼續運算;小的話尾項繼續加;大的話首相加;進行循環,得出結果。

代碼:

import java.util.Scanner;
public class two { public static void main(String[] args) { Scanner sb=new Scanner(System.in); int sum = sb.nextInt(); int l=1; int h=2; int m=(sum+1)/2; while(l<m) {if((l+h)*(h-l)/2==sum) {System.out.println(l+"到"+h); l
++; h++;} else { if((l+h)*(h-l)/2<sum) {h=h++;} else {if((l+h)*(h-l+1)/2>sum) {l=l++;} } } } } }

2、找出所有和為S的連續整數集合