Minimum multiple of m where digital sum equals m: Difference between revisions

From Rosetta Code
Content added Content deleted
m (clarify slightly)
(Added XPL0 example.)
Line 98: Line 98:
69: 1157971
69: 1157971
70: 12842857</pre>
70: 12842857</pre>

=={{header|XPL0}}==
<lang XPL0>func SumDigits(N); \Return sum of digits in N
int N, S;
[S:= 0;
while N do
[N:= N/10;
S:= S + rem(0);
];
return S;
];

int C, N, M;
[C:= 0; N:= 1;
repeat M:= 1;
while SumDigits(N*M) # N do M:= M+1;
IntOut(0, M);
C:= C+1;
if rem (C/10) then ChOut(0, 9\tab\) else CrLf(0);
N:= N+1;
until C >= 40+30;
]</lang>

{{out}}
<pre>
1 1 1 1 1 1 1 1 1 19
19 4 19 19 13 28 28 11 46 199
19 109 73 37 199 73 37 271 172 1333
289 559 1303 847 1657 833 1027 1576 1282 17497
4339 2119 2323 10909 11111 12826 14617 14581 16102 199999
17449 38269 56413 37037 1108909 142498 103507 154981 150661 1333333
163918 322579 315873 937342 1076923 1030303 880597 1469116 1157971 12842857
</pre>

Revision as of 15:03, 22 January 2022

Minimum multiple of m where digital sum equals m is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

Generate the sequence a(n) when each element is the minimum integer multiple m such that the digit sum of n times m is equal to n.


Task
  • Find the first 40 elements of the sequence.


Stretch
  • Find the next 30 elements of the sequence.


See also



Raku

<lang perl6>sub min-mult-dsum ($n) { (1..∞).first: (* × $n).comb.sum == $n }

say .fmt("%2d: ") ~ .&min-mult-dsum for flat 1..40, 41..70;</lang>

Output:
 1: 1
 2: 1
 3: 1
 4: 1
 5: 1
 6: 1
 7: 1
 8: 1
 9: 1
10: 19
11: 19
12: 4
13: 19
14: 19
15: 13
16: 28
17: 28
18: 11
19: 46
20: 199
21: 19
22: 109
23: 73
24: 37
25: 199
26: 73
27: 37
28: 271
29: 172
30: 1333
31: 289
32: 559
33: 1303
34: 847
35: 1657
36: 833
37: 1027
38: 1576
39: 1282
40: 17497
41: 4339
42: 2119
43: 2323
44: 10909
45: 11111
46: 12826
47: 14617
48: 14581
49: 16102
50: 199999
51: 17449
52: 38269
53: 56413
54: 37037
55: 1108909
56: 142498
57: 103507
58: 154981
59: 150661
60: 1333333
61: 163918
62: 322579
63: 315873
64: 937342
65: 1076923
66: 1030303
67: 880597
68: 1469116
69: 1157971
70: 12842857

XPL0

<lang XPL0>func SumDigits(N); \Return sum of digits in N int N, S; [S:= 0; while N do

   [N:= N/10;
   S:= S + rem(0);
   ];

return S; ];

int C, N, M; [C:= 0; N:= 1; repeat M:= 1;

       while SumDigits(N*M) # N do M:= M+1;
       IntOut(0, M);
       C:= C+1;
       if rem (C/10) then ChOut(0, 9\tab\) else CrLf(0);
       N:= N+1;

until C >= 40+30; ]</lang>

Output:
1       1       1       1       1       1       1       1       1       19
19      4       19      19      13      28      28      11      46      199
19      109     73      37      199     73      37      271     172     1333
289     559     1303    847     1657    833     1027    1576    1282    17497
4339    2119    2323    10909   11111   12826   14617   14581   16102   199999
17449   38269   56413   37037   1108909 142498  103507  154981  150661  1333333
163918  322579  315873  937342  1076923 1030303 880597  1469116 1157971 12842857