プログラム:NとLの2つの数値をとるプログラムを作った。Nは2D配列のサイズであり、Lは3 - 16の数値である。プログラムは配列を構築し、私は中心の値であり、あなたが配列を通過するとき(螺線形で)、値が1だけ増加します。それは素数です、その数はその場所に割り当てられていない場合は、それ*は、代わりにその場所を取る浮動小数点例外(コアダンプ
エラー:?私はこの問題を解決する方法を、「浮動小数点例外」エラーを取得しています
コード:
void Array_Loop(int *Array, int n, int L) ;
int Is_Prime(int Number) ;
int main(int argc, char *argv[]){
int **Array ;
int n, L ;
n = atoi(argv[1]) ;
L = atoi(argv[2]) ;
Matrix_Build(&Array, n, n) ;
Array_Loop(Array, n, L) ;
return 0 ;
}
void Array_Loop(int *Array, int n, int L){
int i, j, k, h ;
int lctn, move;
lctn = n/2 + 1 ;
i = lctn ;
j = lctn ;
move = 1
while(i != 0 && j != n){
for(j = lctn ; j < lctn + move ; j++){
if(L % 2 == 2) Array[i][j] = -1 ;
else Array[i][j] = Is_Prime(L) ;
L++ ;
}
move = move * -1 ;
for(i = i ; i > lctn - move ; i--){
if(L % 2 == 2) Array[i][j] = -1 ;
else Array[i][j] = Is_Prime(L) ;
L++ ;
}
move-- ;
for(j = j ; j > lctn - move ; j--){
if(L % 2 == 2) Array[i][j] = -1 ;
else Array[i][j] = Is_Prime(L) ;
L++ ;
}
move = move * -1 ;
for(i = i ; i < lctn - move ; i--){
if(L % 2 == 2) Array[i][j] = -1 ;
else Array[i][j] = Is_Prime(L) ;
L++ ;
}
move++ ;
}
}
int Is_Prime(int Number){
int i ;
for(i = 0 ; i < Number/2 ; i++){
if(Number % i != 0) return -1 ;
}
return Number ;
}
あなたは、分裂しています/ゼロで修正する。 – Mysticial
最初の繰り返しで 'Number%i' ...' i = 0'を返します。 – Mysticial
また、 'move <0'、' lctn - move> lctn'。あなたの兆候を見てください。 –