首页 > 解决方案 > 用两个数字的特定数字总和排列数字的算法

问题描述

我目前正在尝试创建一个算法,该算法应该能够将数字与特定数字总和对齐。例如,在 1 到 500 之间的数字和为 13 的数字。有人可以给我一些关于如何进行的建议吗?

我目前的进展:

 public class Digitsum{

static int Digitsum2(int number) {  //method to find out the digit sum from numbers between 1 and 500
    int sum = 0;
    if(number == 0){
        return sum;
    } else {
        sum += (number%10);
        Digitsum2(number/10);

    }
    return sum;
        }

static int Digitsum13(int x) { //method to line up the numbers with a digit sum of 13

    while (x <= 500) {
        x++;
        Digitsum2(x);
    }
    return x; 

}


public static void main(String[ ] args) {
   Digitsum13(13);
}

}

标签: javamathsumintdigit

解决方案


您想查找特定范围内的所有数字(在本例中为 1-500),其中各个数字的总和为特定目标总和(在本例中为 13)并打印它们的列表。

数字总和类:

public class Digitsum {

    static void digitSum(int target)
    {
    System.out.println("Target: " + target);
        for(int i = 1; i <= 500; i++)
        {
            int currsum = 0;
            int currnum = i;
            
            while(currnum > 0 )
            {
                currsum += currnum%10;
                currnum /= 10;
            }
            if( currsum == target)
            {
                //print each match
                System.out.println(i);
            }
        }
        
    }

    public static void main(String[] args) {
        System.out.println("Starting iteration from 1-500");
        digitSum(13);
    }

}

测试用例:

从1-500目标开始迭代:13 49 58 67 76 85 94 139 148 157 166 175 184 193 229 229 238 247 256 265 274 274 274 283 292 319 328 337 346 346 355 364 373 373 373 373 382 391 409 418 418 418 427 427 427 43644454444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444色4444.444444444444444444页

从 1-500 开始迭代目标:2 2 11 20 101 110 200

从 1-500 开始迭代目标:19 199 289 298 379 388 397 469 478 487 496


推荐阅读