Increasing gaps between consecutive Niven numbers: Difference between revisions

Added Algol 68
(Added Algol 68)
Line 89:
21 99 800054 9898956
22 108 3750017 49989744
</pre>
 
=={{header|ALGOL 68}}==
<lang algol68>BEGIN # show where the gaps increase in the series of Niven numbers #
# ( numbers divisible by the sum of their digits ) #
INT n count := 0;
INT g count := 0;
INT n gap := 0;
INT this n := 1;
print( ( " Gap Gap Niven Niven Next", newline ) );
print( ( "Index Value Index Number Niven Number", newline ) );
print( ( "----- ----- -------- --------- ------------", newline ) );
INT n0 := 0;
FOR d0 FROM 0 TO 9 DO
INT n1 := 0;
FOR d1 FROM 0 TO 9 DO
INT s1 = d0 + d1, t1 = n0 + n1;
INT n2 := 0;
FOR d2 FROM 0 TO 9 DO
INT s2 = s1 + d2, t2 = t1 + n2;
INT n3 := 0;
FOR d3 FROM 0 TO 9 DO
INT s3 = s2 + d3, t3 = t2 + n3;
INT n4 := 0;
FOR d4 FROM 0 TO 9 DO
INT s4 = s3 + d4, t4 = t3 + n4;
INT n5 := 0;
FOR d5 FROM 0 TO 9 DO
INT s5 = s4 + d5, t5 = t4 + n5;
INT n6 := 0;
FOR d6 FROM 0 TO 9 DO
INT s6 = s5 + d6, t6 = t5 + n6;
INT n7 := 0;
FOR d7 FROM 0 TO 9 DO
INT s7 = s6 + d7, t7 = t6 + n7;
FOR d8 FROM 0 TO 9 DO
INT s8 = s7 + d8;
IF s8 /= 0 THEN
INT t8 = t7 + d8;
IF t8 MOD s8 = 0 THEN
# have a Niven number #
INT this gap = t8 - this n;
IF this gap > n gap THEN
# found a larger gap #
g count +:= 1;
n gap := this gap;
print( ( whole( g count, -5 )
, whole( n gap, -6 )
, whole( n count, -9 )
, whole( this n, -10 )
, " "
, whole( t8, 0 )
, newline
)
)
FI;
n count +:= 1;
this n := t8
FI
FI
OD # d8 # ;
n7 +:= 10
OD # d7 # ;
n6 +:= 100
OD # d6 # ;
n5 +:= 1 000
OD # d5 # ;
n4 +:= 10 000
OD # d4 # ;
n3 +:= 100 000
OD # d3 # ;
n2 +:= 1 000 000
OD # d2 # ;
n1 +:= 10 000 000
OD # d1 # ;
n0 +:= 100 000 000
OD # d0 #
END</lang>
{{out}}
<pre>
Gap Gap Niven Niven Next
Index Value Index Number Niven Number
----- ----- -------- --------- ------------
1 1 1 1 2
2 2 10 10 12
3 6 11 12 18
4 7 26 63 70
5 8 28 72 80
6 10 32 90 100
7 12 83 288 300
8 14 102 378 392
9 18 143 558 576
10 23 561 2889 2912
11 32 716 3784 3816
12 36 1118 6480 6516
13 44 2948 19872 19916
14 45 4194 28971 29016
15 54 5439 38772 38826
16 60 33494 297864 297924
17 66 51544 478764 478830
18 72 61588 589860 589932
19 88 94748 989867 989955
20 90 265336 2879865 2879955
21 99 800054 9898956 9899055
22 108 3750017 49989744 49989852
23 126 6292149 88996914 88997040
24 135 44194186 689988915 689989050
25 144 55065654 879987906 879988050
26 150 61074615 989888823 989888973
</pre>
 
3,034

edits