Java 用两个数字的特定数字和排列数字的算法

Java 用两个数字的特定数字和排列数字的算法,java,math,sum,int,digit,Java,Math,Sum,Int,Digit,我目前正在尝试创建一个算法,该算法应该能够将数字与特定的数字和对齐。例如,数字总和为13的数字介于1和500之间。有人能给我一些关于如何进行的建议吗 我目前的进展: 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){

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

我目前的进展:

 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);
}
公共类Digitsum{
静态int-Digitsum2(int-number){//从1到500之间的数字中找出数字和的方法
整数和=0;
如果(数字==0){
回报金额;
}否则{
总和+=(数字%10);
Digitsum2(数字/10);
}
回报金额;
}
静态int-Digitsum13(intx){//将数字与13的数字之和对齐的方法

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

DigitSumClass:
公共类Digitsum{
静态void digitSum(int目标)
{
System.out.println(“目标:+Target”);
对于(int i=1;i 0)
{
currsum+=currnum%10;
currnum/=10;
}
如果(currsum==目标)
{
//打印每场比赛
系统输出打印LN(i);
}
}
}
公共静态void main(字符串[]args){
System.out.println(“从1-500开始迭代”);
洋地黄(13);
}
}
测试用例: 从1-500目标开始迭代:13 49 58 67 76 85 94 139 148 157 166 175 184 193 229 238 247 256 265 274 283 292 319 328 337 346 355 364 373 382 391 409 418 427 436 445 454 463 472 481 490

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

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


有三个因素

  • 从1循环到500
  • 计算数字和
  • 检查数字和是否为可接受值
如果您单独考虑这些,代码将是干净的



我正在发布一个简单的程序,我想它会帮你完成工作。因为理解你的程序有点困难

class Example{
public static void main(String args[]){
    digitsum(13);
}

public static void digitsum(int num){
    int value;
    int copyofvalue;

    for(int i=1;i<500;i++){
        int sum=0;
        value=i;
        copyofvalue=value;

        while(value!=0){
            sum+=value%10;
            value/=10;
        }

        if(sum==num){
            System.out.println(copyofvalue);
        }
    }
}
类示例{
公共静态void main(字符串参数[]){
洋地黄(13);
}
公共静态void digitsum(int num){
int值;
智力价值;

对于(int i=1;i您能添加更多示例(不是代码,只是输入-输出)“排列”的含义是什么吗?输入:数字13(20);输出:1到500之间的每个数字,数字为20line up=System.out.println(1-500之间的数字,数字为13),与
public class Digitsum {
    static int digitsum(int n) {
        int ret = 0;
        while (n != 0) {
            ret += n % 10;
            n /= 10;
        }
        return ret;
    }
    public static void main(String[ ] args) {
        // digitsum2
        System.out.println("------- digitsum2-------");
        for (int i = 1; i <= 500; i++)
            if (digitsum(i) == 2)
                System.out.println(i);

        // digitsum13
        System.out.println("------- digitsum13-------");
        for (int i = 1; i <= 500; i++)
            if (digitsum(i) == 13)
                System.out.println(i);
    }
}
------- digitsum2-------
2
11
20
101
110
200
class Example{
public static void main(String args[]){
    digitsum(13);
}

public static void digitsum(int num){
    int value;
    int copyofvalue;

    for(int i=1;i<500;i++){
        int sum=0;
        value=i;
        copyofvalue=value;

        while(value!=0){
            sum+=value%10;
            value/=10;
        }

        if(sum==num){
            System.out.println(copyofvalue);
        }
    }
}