渦巻状の数字列(下1コード参照)から、素数のみを表示させない方法についてです。
どれが素数かを判別するコードは作れるのですが(下2コード参照)、
この二つのコードを組み合わせて、渦巻状の数字列から素数を抜くコードがわかりません。
どうぞよろしくお願いいたします。
//下1コード #include <stdio.h> int main(void) { #define N 6 int a[N+2][N+2] = { 0 }; int p[4] = { 1,0,-1,0 }; int q[4] = { 0,1,0,-1 }; for (int i = 0; i <= N; i++) a[0][i] = a[N+1][i+1] = a[i][0] = a[i+1][N+1] = 1; for (int x = 1, y = 1, t = 0, i = 1; i <= N*N; x += p[t], y += q[t]) if (a[y][x] = N*N+1-i++, a[y + q[t]][x + p[t]] && ++t == 4) t = 0; for (int i = 1; i <= N; i++, putchar('\n')) for (int j = 1; j <= N; j++) printf("%4d", a[i][j]); return 0; }
//下2コード #include <stdio.h> int main() { int i, j; /* 判定フラグ */ int flag; /* 素数かどうかを判定 */ for( i=2;i<=36;++i ) { flag = 0; for( j=2;j<i;++j ){ if( i%j==0 ) { flag = 1; break; } } /* 判定結果を出力 */ if( flag==0 ) printf("%d ", i); } return 0; }
回答3件
あなたの回答
tips
プレビュー