Dando un rapido sguardo, direi che questo programma già non può compilare:
1)per passare una matrice ad una funzione bisogna specificare il numero di colonne.
codice:
int primi(int mat[][5],int dim1,int dim2)
2)Devi vedere se è primo, non divisibile per 2
codice:
 if(mat[i][j]%c==0)
                {
                    cout<<"No primo"<<endl;
                    break;
                }
3)Inizializzare un riferimento con una costante non ha molto senso
codice:
int diagonali(int mat[][5],int dim1,int dim2, int& sdp=0)
codice:
int diagonali(int mat[][5],int dim1,int dim2,int& sdp)
{
     sdp=0;
     //...