fonction factprem(N) local D FACT 2 -> D {} -> FACT tantque N<= 1 faire si N mod D = 0 alors concat(FACT,D) -> FACT N/D -> N sinon D+1 -> D fsi ftantque retourne FACT ffonction
fonction factprem1(N) local D FACT 2 -> D {} -> FACT tantque D*D!= N faire si N mod D = 0 alors concat(FACT,D) -> FACT N/D-> N sinon D+1 -> D fsi ftantque concat(FACT,N) -> FACT retourne FACT ffonctionDans la liste FACT, on a les diviseurs premiers éventuellement plusieurs fois, par exemple :
Dans la liste FACT, on fait suivre chaque diviseur premier par son
exposant, par exemple :
factprem2(12)={2,2,3,1}.
fonction facprem2(N) local K D FACT {}->FACT 0 -> K tantque N mod 2 == 0 faire K+1 -> K N/2 -> N ftantque si K !=0 alors concat(FACT,{2 K}) -> FACT fsi 3 ->D tantque D*D<= N faire 0 -> K tantque N mod D = 0 faire K+1 -> K N/D -> N ftantque si K !=0 alors concat(FACT,{D K})-> FACT fsi D+2 -> D ftantque si N != 1 alors concat(FACT,{N 1})-> FACT fsi retourne FACT ffonction
fonction factprem3(N) local J,D,FACT 2->D {}->FACT tantque (D*D<=N) faire 0->J tantque (N mod D=0) faire N/D->N J+1->J ftantque si (J!= 0) alors concat(FACT,{D,J})->FACT fsi si (D<4) alors 2*D-1->D sinon D+(4*D mod 6)->D fsi ftantque si (N !=1) alors concat(FACT,{N,1})->FACT fsi retourne(FACT) ffonction