假定有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); }