Ciao a tutti,
premetto che da qualche mese mi sto cimentando nell'utilizzo di C dopo una buona esperienza (universitaria) con la programmazione in Pascal.
Detto questo, mi trovo in difficoltà proprio con un progetto che devo presentare per un esame: il codice che posto dovrebbe essere perfettamente funzionate, il solo difetto che ho riscontrato è che inizialmente stampa a video 2 volte consecutivamente la stessa identica cosa all'interno del ciclo while con condizione (esito == 0).
Help Me!!!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define DIM 64

int binario(int);
long int esponenziazione(int,int,int);
long int potenza(int, int);

int n, k, s, a, i, j, l, esito;
int vet[DIM];
long int riduz, p, t, aux;

void main()
{
for(i=0;i<DIM;i++)
{
vet[i]=0;
}
do
{
printf("Introduci due numeri naturali n,k > 1: ");
scanf("%d %d", &n, &k);
} while (n<2 || k<2);
esito=0;
while (esito==0)
{
long int limite = potenza(10,n-1);
srand(time(NULL));
do
{
p = limite+rand()%(9*limite);
} while (p%2 == 0);
printf("Il test verra' effettuato sul valore %d\n", p);
s = 0;
t = p-1;
while (t%2 == 0)
{
t = (t)/2;
s++;
}
for (i=1; i<=k; i++)
{
a = 2+rand()%(p-2);
aux = esponenziazione(a,t,p);
if ((aux == 1) || (aux == p-1))
{
esito=1;
}
else
{
j = 1;
while ((j<=s) && (esito == 0))
{
aux = (potenza(aux,2))%p;
if (aux == p-1)
{
esito=1;
}
j++;
}

}
if (esito == 0)
{
printf("Il valore %d per a=%d e' non primo.\n", p, a);
}
else
{
printf("Il valore %d per a=%d e' primo.\n", p, a);
}
}
getchar();
}
getchar();
}


int binario(int esponente)
{
int i=0;
while(esponente != 0)
{
if((esponente%2)==0)
{
vet[i]=0;
}
else
{
vet[i]=1;
}
esponente=esponente/2;
i++;
}
printf("%d\n", i);
return i;
}


long int potenza(int b, int e)
{
long int pot=b;

if (e == 0)
{
pot=1;
}

else if (e > 1)
{
while (e>1)
{
pot = pot*b;
e--;
}
}
return pot;
}


long int esponenziazione(int base, int esponente, int modulo)
{
int y=1;
int i=l;
while (i>=0)
{
y = (potenza(y,2)*potenza(base,vet[i]))%modulo;
i = i--;
}
return y;
}