簡體   English   中英

用兩個數字的特定數字和對數字進行排隊的算法

[英]Algorithm to line up numbers with a specific digit sum of two numbers

我目前正在嘗試創建一種算法,該算法應該能夠將數字與特定的數字總和對齊。 例如,數字總和為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);
}

}

您想查找特定范圍內的所有數字(在這種情況下為1-500),其中各個數字的總和等於特定目標總和(在這種情況下為13)並打印它們的列表。

DigitSumClass:

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 238 247 256 265 265 274 283 292 319 328 337 346 355 364 373 373 382 391 409 418 427 436 445 445 463 463 472 472 481 490

從1-500開始迭代目標:2 2 11 20 101 110 200

從1-500開始迭代目標:19199289298379379388 397 469478487487496

有三個因素。

  • 從1到500循環
  • 計算數字總和
  • 檢查數字和是否是可接受的值

如果您單獨考慮這些,代碼將是干凈的。


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的輸出如下

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

如果您對以上程序有任何疑問,請通過評論告知我。 如果適合您的工作,請將其標記為可接受的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM