プログラム2
$option 0 1 ; // スタックフレームに使うレジスタを最小にする.
$local $int32 c i k t l ;
$reg t k l i ;
$startup ;
c = 2 ; i = 5 ; l = 3 ;
$reserve skip0 break1 ;
$label do0 ;
k = 1 ;
t = l * l ;
$if t >= i $goto skip0 ;
l = l + 1 ;
$label skip0 ;
$label do1 ;
k = k + 2 ;
t = i % k ;
$if t == 0 $goto break1 ;
$if k < l $goto do1 ;
c = c + 1 ;
$label break1 ;
i = i + 2 ;
$if i < 10000000 $goto do0 ;
$return c ;
//参考用のC言語版
#include <stdio.h>
#include <time.h>
int main()
{
int c = 2, i = 5, k, t, l = 3;
do {
k = 1;
if (l * l < i) l++;
do {
k += 2;
if (i % k == 0) goto break1;
} while (k < l);
c++;
break1:
i += 2;
} while (i < 10000000);
printf("%d\n", c); // 664579.
printf("time=%.3f[sec]\n", clock() / (double) CLOCKS_PER_SEC);
return 0;
}