sto eseguendo un semplicissimo programmino per scuola (-.-).. xD
lavoro su linux, con Codelite, e compilo/eseguo il programma tramite il terminare.. lo compila senza errori, mi calcola bene l'elevamento a potenza, solo che quando lo eseguo invece di darmi il MCD e il MCM mi dice "Eccezione in virgola mobile".. ><

le due funzioni dovrebbero essere corrette, al massimo devo darci un'occhiata in più.. ma vorrei sapere il perchè mi da quell'errore.. qualcuno sa come aiutarmi?

codice:
#include <stdio.h>

//inserisci valori
int insVal(){
    int a;
	do{
		printf("Inserisci il valore: ");
		scanf("%d",&a);
	}while(a<0);
    return a;
}

//calcola l'elevamento a potenza
int calcElev(int x,int y){
    int i,elev=1;
    for(i=0;i<y;i++){
		elev=elev*x;
	}
    return elev;
}

//Minimo Comun Divisore
int calcMinCD(int x,int y){
    int MCD,i;
	for(i=0;i<x;i++){
		if(x%i==0 && y%i==0){
			MCD=i;
			break;
		}
	}
	return MCD;
}

//Massimo Comune Multiplo
int calcMaxCM(int x,int y){
    int MCM,i;
	if(x>=y){
		if(x%y==0){
			MCM=x;
		}else{
			MCM=x*y;
		}
	}
	return MCM;
}

void main(){
    int dat1,dat2,cont=1;
   
    dat1=insVal();
    dat2=insVal();
	
	printf("\nPrimo: %d",dat1);
	printf("\nSecondo: %d\n",dat2);
	printf("\nElevamento: %d\n",calcElev(dat1,dat2));
	printf("\nMinimo Comun Divisore: %d\n",calcMinCD(dat1,dat2));
	printf("\nMassimo Comune Multiplo: %d\n",calcMaxCM(dat1,dat2));

    getchar();
}
Grazie mille a tutti