Un enfant curieux utilise un programme qui peut factoriser un nombre ou une expression sous la forme suivante: p1^e1 * p2^e2 * ... * pn^en . Les exposants égaux à 1sont omis par exemple360 = 2^3 * 3^2 * 5
L'enfant saisit cette sortie dans le programme en tant que nouvelle entrée, mais elle ne comprend pas le ^signe, donc parfois elle ignore un ou plusieurs de ceux qui concaténent la base principale et l'exposant correspondants. Par exemple(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280)
En raison de ces erreurs, elle peut obtenir une factorisation différente qu'elle peut saisir à nouveau (en sautant 0 ou plus ^). Elle répète le processus jusqu'à ce que la factorisation ne change plus (peut-être qu'il n'y en a plus ^ou elle a copié la sortie correctement).
Vous devez écrire un programme ou une fonction qui, avec un entier n( n>1), affiche tous les nombres possibles dans un ordre croissant dont la factorisation pourrait être celle avec laquelle l'enfant s'est retrouvé (y compris n). Par exemple, pour l'entrée, 16les factorisations finales possibles sont(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23
Détails d'entrée:
- l'entrée est un seul entier plus grand que
1 - aucune entrée ne sera donnée qui génère un nombre de sortie supérieur à
2^31-1 - aucune entrée ne sera donnée qui génère plus que
1000des nombres de sortie
Détails de sortie:
- une liste d'entiers dans une forme pratique pour votre langue
Exemples:
Entrée => Sortie
11 => 11
16 => 16 24 69
360 => 140 360 770 1035 1219 1280 2875 3680
605 => 560 605 840 2415
2048 => 211 2048
58564 => 230 456 1311 2508 9975 12768 13794 20748 58564 114114 322102
C'est le golf de code, donc le programme le plus court gagne.