56 lines
765 B
Plaintext
56 lines
765 B
Plaintext
BYTE FUNC Gcd(BYTE a,b)
|
|
BYTE tmp
|
|
|
|
IF a<b THEN
|
|
tmp=a a=b b=tmp
|
|
FI
|
|
|
|
WHILE b#0
|
|
DO
|
|
tmp=a MOD b
|
|
a=b b=tmp
|
|
OD
|
|
RETURN (a)
|
|
|
|
BYTE FUNC Contains(BYTE ARRAY a BYTE len,value)
|
|
BYTE i
|
|
|
|
FOR i=0 TO len-1
|
|
DO
|
|
IF a(i)=value THEN
|
|
RETURN (1)
|
|
FI
|
|
OD
|
|
RETURN (0)
|
|
|
|
PROC Generate(BYTE ARRAY seq BYTE count)
|
|
BYTE i,x
|
|
|
|
seq(0)=1 seq(1)=2 seq(2)=3
|
|
FOR i=3 TO COUNT-1
|
|
DO
|
|
x=1
|
|
DO
|
|
IF Contains(seq,i,x)=0 AND
|
|
Gcd(x,seq(i-1))=1 AND Gcd(x,seq(i-2))>1 THEN
|
|
EXIT
|
|
FI
|
|
x==+1
|
|
OD
|
|
seq(i)=x
|
|
OD
|
|
RETURN
|
|
|
|
PROC Main()
|
|
DEFINE COUNT="30"
|
|
BYTE ARRAY seq(COUNT)
|
|
BYTE i
|
|
|
|
Generate(seq,COUNT)
|
|
PrintF("First %B Yellowstone numbers:%E",COUNT)
|
|
FOR i=0 TO COUNT-1
|
|
DO
|
|
PrintB(seq(i)) Put(32)
|
|
OD
|
|
RETURN
|