10までの素数を求めたくて、関数sqrSosuで配列sosu[]に代入しているつもりなのですが、
printf("%d\n", sosu[i]);が(0のため)出力されません。
配列では、ポインタは渡せないのでしょうか?
C
1#include <stdio.h> 2#include <math.h> 3 4void sqrSosu(int sqr, int num[], int *sosu[]); 5// 1から100までの素数を表示する関数 引数:なし 戻り値:0 6int main() 7{ 8 double number = 100; 9 int num[100] = {1}; 10 int sosu[100] = {}; 11 12 // 素数を求める 13 sqrSosu((int)sqrt(number), num, &sosu); 14 15 16for(int i = 2; sosu[i] != 0; i++) 17{ 18 printf("%d\n", sosu[i]); 19} 20 21 return 0; 22} 23 24// 平方根以下の素数を代入する関数 引数:平方根、1から100までの配列、素数配列 戻り値:なし 25void sqrSosu(int sqr, int num[], int *sosu[]) 26{ 27 int i; 28 for(i = 2; i < sqr; i++) 29 { 30 for(int j = 3; j < sqr; j++) 31 { 32 // i以外のiの倍数だったら素数ではない 33 if(j % i == 0) num[j] = 0; 34 } 35 } 36 for(i = 2; i < sqr; i++) 37 { 38 // 素数だったら 39 if(num[i] == 1) *sosu[i] = i; 40 } 41}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/28 04:17
2020/04/28 04:30
2020/04/28 04:34
2020/04/28 04:48
2020/04/28 05:02