prime.ssa 552 B

123456789101112131415161718192021222324252627282930313233
  1. # find the 10,001st prime
  2. # store it in a
  3. export
  4. function $test() {
  5. @start
  6. @loop
  7. %n =w phi @start 5, @tloop %n, @yes %n1
  8. %p =w phi @start 13, @tloop %p1, @yes %p1
  9. %p1 =w add %p, 2
  10. @tloop
  11. %t =w phi @loop 3, @next %t1
  12. %r =w rem %p, %t
  13. jnz %r, @next, @loop
  14. @next
  15. %t1 =w add 2, %t
  16. %tsq =w mul %t1, %t1
  17. %c0 =w csgtw %tsq, %p
  18. jnz %c0, @yes, @tloop
  19. @yes
  20. %n1 =w add 1, %n
  21. %c1 =w ceqw 10001, %n1
  22. jnz %c1, @end, @loop
  23. @end
  24. storew %p, $a
  25. ret
  26. }
  27. # >>> driver
  28. # extern void test(void);
  29. # int a;
  30. # int main() { test(); return !(a == 104743); }
  31. # <<<