假定有k個連續的正整數和爲N,其中連續序列的第一個數爲x,則有x+(x+1)+(x+2)+...+(x+k-1) = N。從而能夠求得x = (N - k(k-1)/2) / k。當x的值小於等於0時,則說明已經沒有正整數序列的和爲N了,此時循環退出。初始化k=2,表示2個連續的正整數和爲N,則能夠求出x的值,並判斷從x開始是否存在2個連續正整數和爲N,若不存在則k++,繼續循環。java
java代碼以下:ide
public static void main(String[] args) { String result="NO"; Scanner sc = new Scanner(System.in); int sum = sc.nextInt(); // (N - k(k-1)/2) / k for ( int k=2; k < sum; k++) { int x=(sum - k*(k-1)/2) / k; //開始值 int m= (sum - k*(k-1)/2) % k; if (x<0){ result="NO"; break; } if (m!=0){ k++; }else { result="YES"; break; } } System.out.println(result); }