Tonno, io un programma così l'ho fatto qualche tempo fa in C (lo sto studiando pure io).
Avevo fatto: metti numero 10, non facevo 10/9, 10/8 ecc... ma il contrario in modo che si bolcca subito nel caso e non perde tempo inutile
10/2=5 resto zero, il ciclo for si blocca
Poi, supponiamo, che tu abbia ancora il numero X, io facevo andare la divisione solo fino a metà del numero stesso: esempio 13 (numero primo), non ha senso fare 13/7, essendo 7*2=14.
In questo modo, ottimizzi ancora di più.
Per quanto riguarda la ridice di n che dice Elemento, non lo so, non ho basi sufficienti, credo che sia qualcosa legato al crivello di Eratostene, che ho letto tempo fa.
Comunque, Tonno, non è difficile farlo...ci sono riuscito io che col C sono agli inizi