ボールドテキスト### 自作関数について
プログラム1をプログラム2のように自作関数を使った形に変更したいです。
プログラム1を「素数を判定する関数」と「判定された素数を表示する関数」の2つに分割するといった具合です。
実際にプログラム3のように自分でやってみたのですがなかなかうまく実行できません。ご指摘お願いします。
プログラム1
#include <stdio.h> #define N 97 int main(){ int i,m,n; int data[N + 1], result[N + 1]; for (i = 0; i < N+1; i++){ data[i] = 1; } data[0] = 0; data[1] = 0; m = 2; n = 0; do{ for (i = 2 * m; i < N + 1; i+=m){ data[i] = 0; } result[n] = m; n++; do{ m++; }while (data[m] == 0 && m < N + 1); } while (m < N + 1); for (i = 0; i < n; i++){ printf("%3d ", result[i]); } }
###プログラム2
#include <stdio.h> #define N 97 int findpn(int a);/*素数を求める*/ void printpn(int result[]);/*素数を表示する*/ int main(){ int result[N+1]; findpm(N); printpm(result[N+1]); return 0; } int findpn() ... void printpn() ...
###プログラム3
#include <stdio.h> #define N 97 int findpn(int a);/*素数を求める*/ void printpn(int result[]);/*素数を表示する*/ /*メイン関数*/ int main(){ int result[N+1]; findpm(N); printpm(result[N+1]); return 0; } int findpm() { int i,m,n; int data[N + 1], result[N + 1]; for (i = 0; i < N+1; i++){ data[i] = 1; } data[0] = 0; data[1] = 0; m = 2; n = 0; do{ for (i = 2 * m; i < N + 1; i+=m){ data[i] = 0; } result[n] = m; n++; do{ m++; }while (data[m] == 0 && m < N + 1); } while (m < N + 1); return result[N+1]; } void printpn(int result[]) { int i,n; for (i = 0; i < n; i++){ printf("%3d ", result[i]); } return 0; }
回答1件
あなたの回答
tips
プレビュー