Ecco vedi ... quindi il problema più grave era la dimensione del buffer (e non poteva essere diversamente).
La seconda questione è nelle for
for (i=0;i<N;i++) { /*RICERCA DEI NUMERI*/
for (j=0;j<N;j++) {
if (array[i]== array2[j]) {
printf("\n\n%d\n\n", array[i]);
}
}
}
che confrontano ogni cifra con sé stessa. E' evidentemente un metodo sbagliato perché il primo 2 sarà confrontato con sé stesso oltre che con l'altro 2, all'andata e al ritorno ... e così per ogni cifra uguale ... e per questo avrai tutte quelle visualizzazioni ...
Devi cambiare metodo, non usare un array2 copia di array ma usa un array che chiamerai cifre di 10 elementi tutti inizializzati a 0 all'avvio.
E un solo ciclo for che aumenti ogni elemento quando trova la cifra corrispondente. Alla fine del ciclo avrai nel vettore cifre, per ogni cifra, quante volte si è presentata. Dovrai solo visualizzare le cifre che si sono presentate almeno 2 volte.