L'algo est simple: 4 lignes seulement?
Imaginez V72. Divid = 72. On pose d=2 . On divise successivement par le carré de d, soit d2 = d², donc par 2², 3², 4², 5², etc.
Divid/d2 = q
Sortie de la boucle pour cet exemple, quand le PC atteint d = 8 la racine par défaut,(d2 = 64), ou quand le dividende Divid devient inférieur au diviseur. (Le PC choisira...)
Quand le quotient de Divid par un carré d2 est entier, il est mis en mémoire dans la variable qm = q .
Dans ce cas divid prend la valeur du quotient (Divid = q) et on refait la division par le même diviseur.
Sinon, on avance, on divise Divid par (d+1)², etc...
Le dernier qm mis en mémoire correpond ainsi au plus grand carré diviseur! Pour 72, qm est finalement qm = 2.
72/qm = 72/2 = 36 et V36 = 6. On a donc racine : 6Vqm = 6V2.
Si qm = 0, c'est que la racine est irréductible: aucun quotient entier trouvé par un carré.
La racine entière et celle de 0 et 1 sont traités avant, à part! Avec des exit sub.
Le côté rébarbatif est de rendre les label visibles et invisibles selon les cas!
A noter qu'en VB 6 il est facile de dessiner une racine sur la feuille, je n'ai pas trouvé avec VB Net (Je débute juste!) ! Plus simple est bien VB6, VB Net 2003, bof ! Et lourd ! Passez à Vb 2005 Express, gratuit...