Cette question intéressante est beaucoup plus difficile qu'il n'y paraît, et elle n'a pas reçu de réponse. La question peut être divisée en 2 questions très différentes.
1 étant donné N, trouver la liste L des facteurs premiers de N
2 donné L, calculer le nombre de combinaisons uniques
Toutes les réponses que je vois jusqu'à présent se réfèrent au n ° 1 et omettent de mentionner qu'il n'est pas traitable pour un nombre énorme. Pour des nombres N de taille moyenne, voire 64 bits, c'est facile; pour un N énorme, le problème d'affacturage peut prendre "une éternité". Le cryptage par clé publique en dépend.
La question n ° 2 nécessite plus de discussion. Si L ne contient que des nombres uniques, il s'agit d'un calcul simple utilisant la formule de combinaison pour choisir k objets parmi n éléments. En fait, vous devez additionner les résultats de l'application de la formule en faisant varier k de 1 à sizeof (L). Cependant, L contiendra généralement plusieurs occurrences de plusieurs nombres premiers. Par exemple, L = {2,2,2,3,3,5} est la factorisation de N = 360. Or ce problème est assez difficile!
En reformulant # 2, étant donné que la collection C contient k éléments, de telle sorte que l'élément a a un "doublon", et l'élément b a b "doublon, etc. Par exemple, {2}, {2,2}, {2,2,2}, {2,3}, {2,2,3,3} doivent se produire chacun une et une seule fois si L = {2,2 , 2,3,3,5}. Chaque sous-collection unique de ce type est un diviseur unique de N en multipliant les éléments de la sous-collection.