Buon giorno a tutti, sto facendo un esercizio in C e mi chiede di scrivere una funzione che verifichi se un numero è primo o no io ho fatto questo tentativo


#include <stdio.h>
#define ISPRIMO 1
#define NOTPRIMO 0

typedef int bool;

int primo (int a) {

if ((a % a) == 0 & (a % 1) == 0)

return ISPRIMO;

else

return NOTPRIMO;
}

il problema è che per ogni numero inserito il valore è sempre 1 e non capisco il perchè, potete aiutarmi?