Jump to content

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

Add COBOL
(Add Draco)
(Add COBOL)
Line 231:
17449 38269 56413 37037 1108909 142498 103507 154981 150661 1333333
163918 322579 315873 937342 1076923 1030303 880597 1469116 1157971 12842857</pre>
 
=={{header|COBOL}}==
<lang cobol> IDENTIFICATION DIVISION.
PROGRAM-ID. A131382.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VARIABLES.
03 MAXIMUM PIC 99 VALUE 40.
03 N PIC 999.
03 M PIC 9(9).
03 N-TIMES-M PIC 9(9).
03 DIGITS PIC 9 OCCURS 9 TIMES,
REDEFINES N-TIMES-M,
INDEXED BY D.
03 DIGITSUM PIC 999 VALUE ZERO.
01 OUTFMT.
03 FILLER PIC XX VALUE "A(".
03 N-OUT PIC Z9.
03 FILLER PIC X(4) VALUE ") = ".
03 M-OUT PIC Z(8)9.
PROCEDURE DIVISION.
BEGIN.
PERFORM CALC-A131382 VARYING N FROM 1 BY 1
UNTIL N IS GREATER THAN MAXIMUM.
STOP RUN.
CALC-A131382.
PERFORM FIND-LEAST-M VARYING M FROM 1 BY 1
UNTIL DIGITSUM IS EQUAL TO N.
SUBTRACT 1 FROM M.
MOVE N TO N-OUT.
MOVE M TO M-OUT.
DISPLAY OUTFMT.
FIND-LEAST-M.
MOVE ZERO TO DIGITSUM.
MULTIPLY N BY M GIVING N-TIMES-M.
PERFORM ADD-DIGIT VARYING D FROM 1 BY 1
UNTIL D IS GREATER THAN 9.
ADD-DIGIT.
ADD DIGITS(D) TO DIGITSUM.</lang>
{{out}}
<pre style='height:50ex;'>A( 1) = 1
A( 2) = 1
A( 3) = 1
A( 4) = 1
A( 5) = 1
A( 6) = 1
A( 7) = 1
A( 8) = 1
A( 9) = 1
A(10) = 19
A(11) = 19
A(12) = 4
A(13) = 19
A(14) = 19
A(15) = 13
A(16) = 28
A(17) = 28
A(18) = 11
A(19) = 46
A(20) = 199
A(21) = 19
A(22) = 109
A(23) = 73
A(24) = 37
A(25) = 199
A(26) = 73
A(27) = 37
A(28) = 271
A(29) = 172
A(30) = 1333
A(31) = 289
A(32) = 559
A(33) = 1303
A(34) = 847
A(35) = 1657
A(36) = 833
A(37) = 1027
A(38) = 1576
A(39) = 1282
A(40) = 17497</pre>
 
=={{header|Cowgol}}==
2,119

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.