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 à 1
sont 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, 16
les 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
1000
des 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.