#include <stdio.h>
#define L 5 /* 登録個数の上限 */
int main( void ) {
int p[ L + 1 ]; /* 素数登録要配列p (C の配列は 0 から始まる) */
int a[ 3 + 1 ]; /* 「別に作っておく」配列 (C の配列は 0 から始まる) */
int s = 1; /* 算法1。12行まで初期設定。 */
int n = 7;
int f0 = 0;
int f1 = 0;
int i;
a[ 1 ] = 2; /* この辺は実は使ってない。| */
a[ 2 ] = 3;
a[ 3 ] = 5;
p[ 1 ] = 5;
label20:
for ( i = 1; i <= s; i ++ ) { /* 算法2。27行まで。 */
if ( n % p[ i ] == 0 ) {
goto label60;
}
}
if ( n / p[ s ] <= p[ s ] ) { /* 算法3。33行まで。 */
printf( "%d (s=%d)\n", n, s );
}
else {
goto label70; /* C で「終了」は main 関数脱出なので57行に飛ぶ。 */
}
if ( f1 == 1 ) { /* 算法4。35行まで。 */
goto label60;
}
else { /* 算法5。43行まで。 */
s = s + 1;
p[ s ] = n;
if ( s == L ) {
f1 = 1;
}
}
label60:
n = n + 2; /* 算法6。55行まで。 */
if ( f0 == 0 ) {
n = n + 2;
}
if ( f0 == 0 ) {
f0 = 1;
}
else {
f0 = 0;
}
goto label20;
label70:
return 0;
}