blob: 312d5c4ff14e67abf67691f610f20c9cb8cb3d1e [file] [log] [blame] [raw]
+ 2 0 50 10 1672
1+ 2k i1k 1k 1k 50k f c1 to
2+ ci1 z 1j f c50=1
+ i1 z 1 f n=1
3+ i1 z i1 s 1 f n=n+1
+ g 5 if i1 w 50 f gt 50
+ g 3 if ci1 u 0j f c(n)=0
+ i2 z i1 f m=n
4+ i2 z i2 s i1 f m=m+n
+ g 3 if i2 w 50 f gt 50
+ ci2 z 0j f c(m)=0
+ g 4 f goto 4
5+ i1 z 1 f n=1
6+ i1 z i1 s 1 f n=n+1
+ g 10 if i1 w 50 f gt 50
+ g 8 if ci1 u 0j f c(n)=0
7+ t i1 f pch n
8+ g 6 f goto 6
10+ h ff stop
prime number generator using the sieve of eratosthenes
converted to ibm 650 IT compliler
note: ibm 650 terminates card reading on "ff" statement (numbered as 10), so
it is safe to add text and comments below that
IT syntax IT notation in manual c-like equivalent syntax
1+ 2k i1k 1k 1k 50k 1: 2,i1,1,1,50, for(num=1,num<=50;num++)
2+ ci1 z 1j 2: ci1 <- 1. prime(num) = 1.0
+ i1 z 1 i1 <- 1 num=1
3+ i1 z i1 s 1 3: i1 <- i1 + 1 loop1: num++
+ g 5 if i1 w 50 g 5 if i1 >= 50 if num >= 50 goto loope
+ g 3 if ci1 u 0j g 3 if ci1 = 0. if prime(num)=0 goto loop1
+ i2 z i1 i2 <- i1 mult=num
4+ i2 z i2 s i1 4: i2 <- i2 + i1 loop2: mult=mult+num
+ g 3 if i2 w 50 g 3 if i2 >= 50 if mult >= 50 goto loop1
+ ci2 z 0j ci2 <- 0. prime(mult) = 0.0
+ g 4 g 4 goto loop2
5+ i1 z 1 5: i1 <- 1 loope: num = 1
6+ i1 z i1 s 1 i1 <- i1 + 1 prt1: num++
+ g 10 if i1 w 50 g 10 if i1 >= 50 if num >= 50 goto prt3
+ g 8 if ci1 u 0j g 8 if ci1 = 0. if prime(num)=0 goto prt2
7+ t i1 t i1 punch num
8+ g 6 g 6 prt2: goto prt1
10+ h h prt3: end
control card is calculated as follows
number of i integer variables: 2 (i1 and i2)
number of y float variables: 0
number of c float variables: 50 (ci1 ranges from c1 to c50)
higher statement number: 10
using run time package p1 (265 words)
mem avail N = 1999 - (2 + 0 + 50 + 10 + 265) = 1672