[c] Floating point exception( core dump

Program: So I made a program that take two numbers, N and L. N is the size of a 2D array and L is a number from 3 - 16. The program builds the array and starts at the center and works its way out in a counter clockwise spiral. I is the value of the center and its as you go through the array( in the spiral ) the value will increase by one. It it is prime, that number will be assigned to that spot and if not it * will take its place instead.

Error: I'm getting a "Floating point exception " error, how would I solve this?

Code:

 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 ;

}

This question is related to c coredump

The answer is


Floating Point Exception happens because of an unexpected infinity or NaN. You can track that using gdb, which allows you to see what is going on inside your C program while it runs. For more details: https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_gdb.php

In a nutshell, these commands might be useful...

gcc -g myprog.c

gdb a.out

gdb core a.out

ddd a.out