INCREASE U
REPEAT X TIMES ( # Sets Q to 1 if we should print anything after. if its zero, we dont do anything
INCREASE V
REPEAT O TIMES ( # Runs on second ( V > 1 ), sets Q = 1
CLEAR O
INCREASE Q
)
REPEAT U TIMES ( # Runs on first
CLEAR Q
INCREASE O
CLEAR U
)
)
PRINT X
CLEAR X
INCREASE E # Later should be replaced with 1000 or similar
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
REPEAT E TIMES (
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
)
REPEAT E TIMES (
INCREASE E
INCREASE E
INCREASE E
INCREASE E
INCREASE E
)
INCREASE L
INCREASE A
INCREASE M # V on arvo, J on puolet. Vastakohtana N
REPEAT E TIMES (
REPEAT Q TIMES (
# Check for divisible by 2, output to C, A AND J
REPEAT L TIMES ( # L tarkoittaa, että tarvitsee tarkistaa parillisuus
CLEAR A
INCREASE A
REPEAT M TIMES (
CLEAR J
REPEAT V TIMES (
REPEAT A TIMES (
CLEAR A
CLEAR C
INCREASE J
)
REPEAT C TIMES (
CLEAR C
INCREASE A
)
INCREASE C
)
)
REPEAT N TIMES (
CLEAR V
REPEAT J TIMES (
REPEAT A TIMES (
CLEAR A
CLEAR C
INCREASE V
)
REPEAT C TIMES (
CLEAR C
INCREASE A
)
INCREASE C
)
)
CLEAR L
)
INCREASE L
# Ennen C:tä, sillä C voi asettaa A = 1
REPEAT A TIMES ( # parillinen, V = V / 2
CLEAR C
REPEAT A TIMES (
# Aika huono tapa vaihtaa näiden kahden välillä mutta kai se toimii
REPEAT M TIMES (
# Tehdään J:stä pää arvo
CLEAR M
CLEAR A
INCREASE N
)
REPEAT A TIMES (
# Tehdään V:stä pää arvo
CLEAR N
CLEAR A
INCREASE M
)
INCREASE A
)
CLEAR O
CLEAR U
INCREASE U
# nyt määritetään, että täytyykö jatkaa tulostamista (onko V = 1)
REPEAT M TIMES (
REPEAT V TIMES (
REPEAT U TIMES ( # Runs on first
REPEAT O TIMES ( # Runs on second ( V > 1 ), sets Q = 1
INCREASE Q
CLEAR U
)
REPEAT U TIMES (
CLEAR Q
INCREASE O
)
)
)
)
REPEAT N TIMES (
REPEAT J TIMES (
REPEAT U TIMES ( # Runs on first
REPEAT O TIMES ( # Runs on second ( V > 1 ), sets Q = 1
INCREASE Q
CLEAR U
)
REPEAT U TIMES (
CLEAR Q
INCREASE O
)
)
)
)
# Emme tiedä onko parillinen vai ei, joten asetetaan seuraava kierros laskemaan parillisuus
)
REPEAT C TIMES ( # pariton, V = 3*V
# Tässä laskemme seuraavan arvon, tulostamme sen, jonka jälkeen lasketaaan myös toisiksi seuraavan arvon ja asetetaan se V:ksi
CLEAR P
REPEAT M TIMES (
REPEAT V TIMES (
INCREASE P
INCREASE P
INCREASE P
)
)
REPEAT N TIMES (
REPEAT J TIMES (
INCREASE P
INCREASE P
INCREASE P
)
)
INCREASE P
# Nyt P on yhtä suuri kuin nykyinen tarvittava elementti
PRINT P
REPEAT M TIMES (
REPEAT J TIMES ( # Lisätään siihen J niin saadaan sitä seuraava arvo, J on tässä vaiheessa puolet arvosta (ensimmäisestä aloittaen)
INCREASE V # Tiedetään jo, että onko V jaollinen. Nyt tarvitsee tarkistaa vain uudet lisäykset
REPEAT A TIMES (
CLEAR A
CLEAR C
INCREASE J
)
REPEAT C TIMES (
CLEAR C
INCREASE A
)
INCREASE C
)
)
REPEAT N TIMES (
REPEAT V TIMES ( # Lisätään siihen J niin saadaan sitä seuraava arvo, J on tässä vaiheessa puolet arvosta (ensimmäisestä aloittaen)
INCREASE J # Tiedetään jo, että onko V jaollinen. Nyt tarvitsee tarkistaa vain uudet lisäykset
REPEAT A TIMES (
CLEAR A
CLEAR C
INCREASE V
)
REPEAT C TIMES (
CLEAR C
INCREASE A
)
INCREASE C
)
)
REPEAT A TIMES ( # Jos seuraava on pariton, on sen puolikas sama kuin J, joka on 0,75x alkuperäisestä V:stä
CLEAR C
# Aika huono tapa vaihtaa näiden kahden välillä mutta kai se toimii
REPEAT M TIMES (
PRINT V
# Tehdään J:stä pää arvo
CLEAR M
CLEAR A
INCREASE N
)
REPEAT A TIMES (
PRINT J
# Tehdään V:stä pää arvo
CLEAR N
CLEAR A
INCREASE M
)
INCREASE A
)
REPEAT C TIMES ( # Parillinen
CLEAR L
)
)
REPEAT M TIMES (
PRINT V
)
REPEAT N TIMES (
PRINT J
)
)
)