随便给出一个整数 算出 给出的这个数 所有 相加起来的数 等于这个数 并且相加的数 要连续起来
如: 7+8=15,4+5+6=15,1+2+3+4+5=15

解决方案 »

  1.   

    去看看这个帖子 我的回复 http://topic.csdn.net/u/20091017/17/8e8a4e7d-160c-4cf7-969d-72fb92cfb414.html
      

  2.   

    for(int i=1;i<n;i++)
    {
       for(int j=i;j<n;j++)
       {
          //sum如果小于则继续累加,大于则表示break了。。等于就可以输出
       }
    }
      

  3.   

    没有编译器,代码全手写,可能会有点错。
    思路是从这个数的半数(要向上取整)开始算起,然后逐个往下递减。int end = Math.Ceiling(num);
    for(int i = end; i>0; i--)
    {
        int sum=0;
        string str="";
        for(int j=i; j>0;j--)
        {
            sum += j;
            str += j + "+";
            if(sum == num)
            {
                  System.out.println(str.subString(0,str.length()-1)+"="+num;
            }
            else if(sum > num)
            {
                  break;
            }
        }
    }
      

  4.   


    double num  = ?;
    int end = (int)(Math.ceil(num/2)); 
    for(int i = end; i>0; i--) 

        int sum=0; 
        String str=""; 
        for(int j=i; j>0;j--) 
        { 
            sum += j; 
            str += j + "+"; 
            if(sum == num) 
            { 
                  System.out.println(str.substring(0,str.length()-1)+"="+(int)num); 
            } 
            else if(sum > num) 
            { 
                  break; 
            } 
        } 
    }修改了下楼上的
      

  5.   

    public class Test { public static void main(String[] args) { Test t = new Test();
    t.translate(100); } public void translate(int n) {
    int flag = 0, start = 0, temp = start, end = start;
    if (n <= 0) {
    System.out.println("请输入正整数!");
    } else {
    while (start < (n / 2) + 1) {
    if (temp == n) {
    System.out.print(temp + "=");
    for (int i = start; i <= end; i++) {
    if (i != 0) {
    if (i != end) {
    System.out.print(i + "+");
    } else {
    System.out.println(i);
    }
    }
    }
    start++;
    flag = 1;
    end = start + flag;
    temp += end;
    } else if (temp > n) {
    start++;
    flag = 1;
    end = start + flag;
    temp = start;
    } else {
    end = start + flag;
    flag++;
    temp += end;
    }
    }
    }
    }}
      

  6.   

    好像你个题目有bug的,比如16就不可以找连续的整数表示,除非负数也算