1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
resultat <- []
factorise(N, depart)
//on traite le cas de 2 a part pour pouvoir ensuite avancer par pas de 2
si depart == 2
tant que 2 divise N
resultat[] <- 2
N=N/2
fin tant que
factorise(N,3) // on recurse
sinon
i<-depart
tant que i ne divise pas N et i <= sqrt(N)+1// on cherche un diviseur
i<-i+2
fin tant que
//si on en a trouvé un
si i <= sqrt(N)+1
tant que i divise N // on divise autant de fois que possible
resultat[] <- i
N=N/i
fin tant que
factorise(N, i+2) // on recurse
sinon // c'est que N est premier, il n'y a plus de diviseurs
resultat[] <- N // notre N est donc le dernier diviseur de notre nb de depart
fin si
fin fonction |
Partager