Aller au contenu

Décomposition en facteurs premiers - v3

Le cadre

Afin d'améliorer notre deuxième fonction de factorisation, on souhaite une complexité racinaire en n.

On souhaite donc obtenir en temps bref :

🐍 Script Python
assert factorisation_v3(1_000_000_007) == [(1_000_000_007, 1)]
assert factorisation_v3(4_000_000_028) == [(2, 2), (1_000_000_007, 1)]

Exercice

Coder une fonction factorisation_v3 :

  • qui prend en paramètre un entier naturel non nul n
  • et qui renvoie la décomposition en facteurs premiers de n sous la forme d'une liste de tuples (facteur premier, exposant).

⚠ La liste sera donnée dans l'ordre strictement croissant des facteurs premiers. Les exposants associés seront non nuls.

⚠ On demande, ici, une complexité racinaire en n.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : /
.128013],59/f.q78r;nb N_o=ylae%ïpcwgu)vd*M4613kRméhtsP(S0+2C[-i:050H0x0T0w0(0v0U0p0B0v0w0U0U0t010T0(0A010406050U0E0Q0Q0w0l0u040X0s0v0E0}0s0n0p020w0Q0A0m0p0P0x170l0i0E0x0U050f1416181a120A04051F1y1I0f1F120H0(0G0=0@0_0{0S0(0D0S0v1W0S0T10050-0o0v0x1R0^0`011V1X1Z1X0T1)1+1%0T0l1G0T0S1-1T010g0/0x0n1l0x010=1d0U0A0w0n0{0!1%2d2f211/241+270Q29040a0p0V0l0s0A0s0U0(1g1i0+2b0l0l0x0B2D1y2k0n1G0f1 2P1|1~1}1(0H2m0{1Z0n262A1%1O1Q0?1.2Z0(2#0n0s2)1%0A2I1G2N2P2`132e1i2+222:0l170v100p0M2M2~112}2l301/3234360!392f3b2N2Y013g0w35040p0N3k2O123n3e0{3q3s0p0K3w3m2~3o3C360d3G3y3I3A3p0s333r360L3N3c2 1S3f3S3h3t0j3X3z3!3B3$3U3t0k3*3P3,3R3T3D0e3=3d3@3K040M0Y3|3Z2,3^3%0M381z3a3O3}453 0M3j4a3l4c44313.3s0M3v4i3x3Y3J4n100M3F4r3H4d4m3_4w3M4z4k4u4D403W4G4t3Q4f3)4M3+4e4v403;4R3?4T4J0M3{4z1J2^1y2)2S0H1~2X3Q0B2;2s0*1P1G2@0x2_3a3G054;0+4|4B1/0O100+0g4~4S220C36594Y310g100g0w2K3S0(0U0w2D0r0G4q2|5a1/0 040W5e533B100n5A4l5w100F0)3N0p5M0p4N3@55041.0x0l0T3G5O5v5C045E4z5Y5f1/0s10020D0T0m5X5P450Q0(10424G5N5(5B3p5i5k0T0x0E0l1x5%5=225+040t5;5Z015x0$0b5L5N683f100A6d5)0{6a6c676e5@104h2`065|6l0{5R0C1V1+6p5~0n5D6I5G6r5,5.5:6u6q016w405F3o5x5K5{5|6k6e5R0(586S6J6n6M3o6a0I6/4O6.6,6N016a5-5/6?3~6L4%6e6Z6j6$6$6C5 045j2K63656X3Q6a0h7f705S0A0A260H7j455x0W5z726T6K5#7q225x0c6 5?5^6W7v5~5x0F0F75766%7w712`5}6`6s7D226V496z6A7N787x0x7V5*106t7R786V5`6z7N7S3o6E6G7(6_3J7Q3a7?7g100y7)5!6o7{806b7,7~7.7F7:4}73106!7;7=7O6-7y863@6a0f0f893l7 7k858i8j8u4e107`7-6e6a0Z8s2O8z7W7F7Y4b7=786)6+8D7P048C8a8E6P6~8n7E5_7z5H048h8N8y8J6m7a617d665u6T7h8%5!0w7m7o8_6f107t8~7x8w8e6T7B83798V3l787J7L4G7!767$6^8S5~8F8H3t8b4w3N9g8-6D102I0T645$9k6`7x7b62648=4b1y504{4(9K0f4+1y0T4-9P2V2Q0w1*9M4+1E526`2I0Q0r5j0O0x0r0S0N101q1s1u1w0p8*9b1L3b2)3o0w0H0Q1h2C0(1h0p2.0g6a1E9}9 a12D0%0}0T1`040J0R1 4=0p270z0G7`1M1H040#0,620p0Qak0Sam1w0Tanaw1r26aE0A1e0;7n0la73T0nax9=0=0x0v1+0p0G1v0p26aY0Ma#aE0G0!7i9`9Z0V0s640-aR0ca#aW1,2I0UaS0E3r6*0(0R1,2F131|1h0D5#0wap8Cb70nb9a-as1F0qa;0;0H0R4;0E0G0l0(2x0nbm1,0o0(a$2r0/1+9FayaA4=0Ubh3b9N4^129N0,0.0:04.