我目前正在尝试创建一个算法,该算法应该能够将数字与特定数字总和对齐。例如,数字总和为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);
}
}
答案 0 :(得分:0)
您想要找到特定范围内的所有数字(在这种情况下为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 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 478 487 496
答案 1 :(得分:0)
有三个因素。
如果你单独考虑这些,代码将是干净的。
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
答案 2 :(得分:0)
我发布了一个简单的程序并认为它会完成你的工作。因为理解你的程序有点困难。
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);
}
}
}
如果您对上述计划有任何疑问,请通过评论告诉我。 如果它适合您的工作,请将其标记为已接受的答案。