码迷,mamicode.com
首页 > 其他好文 > 详细

ConsecutiveInteger判断给定的整数n能否表示成连续的m(m>1)个正整数之和

时间:2019-10-10 18:38:43      阅读:372      评论:0      收藏:0      [点我收藏+]

标签:stat   正整数   java代码   ons   ann   开始   pre   int   void   

假定有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代码如下:

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);
    }

ConsecutiveInteger判断给定的整数n能否表示成连续的m(m>1)个正整数之和

标签:stat   正整数   java代码   ons   ann   开始   pre   int   void   

原文地址:https://blog.51cto.com/9283734/2441274

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!