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;
//...