subtractive_generator: procedure options (main); declare (r, s) (0:54) fixed binary (31); declare (i, n, seed) fixed binary (31); /* Bentley's initialization */ seed = 292929; s(0) = seed; s(1) = 1; /* Compute s2,s3,...,s54 using the subtractive formula sn = s(n-2) - s(n-1)(mod 10**9). */ do n = 2 to hbound(s,1); s(n) = mod ( s(n-2) - s(n-1), 1000000000); end; /* Rearrange initial values. */ do n = 0 to hbound(r,1); r(n) = s( mod(34*(n+1), 55)); end; do n = 55 to 219; i = mod (n, 55); r(i) = mod ( r(mod(n-55, 55)) - r(mod(n-24, 55)), 1000000000); end; do n = 220 to 235; i = mod(n, 55); r(i) = mod ( r(mod(n-55, 55)) - r(mod(n-24, 55)), 1000000000); put skip list (r(i)); end; end subtractive_generator;