Vérification de la décomposition en facteur premier
Le cadre
On peut décomposer un entier naturel non nul en produit de facteurs premiers, comme :
- \(10 = 2×5\)
- \(9 = 3×3\)
- \(8 = 2×2×2\)
- \(7 = 7\), un produit avec un seul facteur
Pour \(1\), on peut dire que le produit est vide, et qu'il vaut bien \(1\).
On s'apprête bientôt à coder des versions d'une fonction de décomposition en facteurs premiers.
🐍 Script Python
assert factor(1) == []
assert factor(7) == [7]
assert factor(8) == [2, 2, 2]
assert factor(9) == [3, 3]
assert factor(10) == [2, 5]
assert factor(11) == [11]
assert factor(12) == [2, 2, 3]
assert factor(4953851) == [7, 7, 17, 19, 313]
assert factor(600851475143) == [71, 839, 1471, 6857]
assert factor(14837457737) == [1471, 1471, 6857]
On aimerait pouvoir vérifier le résultat :
- La liste doit être triée dans l'ordre croissant. (En théorie, on accepte tout ordre, mais pour notre exercice, on veut vérifier !)
- Chaque facteur doit être premier.
- Le produit des facteurs doit être égal au nombre initial.
Exercice
Coder une fonction vérification
- qui prend en paramètres :
- un entier naturel non nul
n, - une proposition
facteursde décomposition en facteurs premiers : une liste d'entiers naturels,
- un entier naturel non nul
- et qui renvoie un booléen
Truesi les 3 critères sont respectés,Falsesinon.
On pourra utiliser librement la [fonction
est_premier vue précédemment, disponible pour cet exercice.
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
.128013,59/f78r;nb _o=ylaepcwgu)vd*46F13kméhtsP(S02-i:050B0t0M0s0U0r0N0m0v0r0s0N0N0p010M0U0u010406050N0y0J0J0s0i0q040Q0o0r0y0:0o0k050e0`0|0~100^0u04051g191j0e1g0^0B0U0A0(0*0,0.0L0U0x0L0r1x0L0M0?050Z0l0r0t1s0+0-011w1y1A1y0M1G1I1E0M0i1h0M0L1K1u010f0#0t0k0s0J0t010(130N0u0s0k0.0S1E1=1@1#1M1(1I1+1-0?0a0m0O0i0o0u0o0N0U160k0m0X1:0i0i0t0v2e191|0k1h0e1Z2r1W1Y1X1F0B1~0.1A0k1*2b1E1p1r0)1L2B0U2D0k0o2H1E0u2k1h2p2r2V0_1?2f2J1$2O0i0}0r0?0m0G2o2Z0@2Y1}2#1M2%2)2+0S2.1@2:2p2A012^0s2*040m0H2|2q0^2 2?0.32340m0D382~2Z303e2+0c3i3a3k3c310o2(332+0E3p2;2!1t2@3u2_350g3z3b3C3d3E3w350h3I3r3K3t3v3f0d3Q2=3S3m040G0R3X3B2K3T3F0G2-1a2/1k2T192H2u0B1Y2z3s0v2P1.1h3@1i3=2X3/2}053}0X2U3R3*0I0?0X0f3i3A300w2+4h3J3*0k0f0?0A0K0i0U1(0v0s2n452q4i3s0=040P4m4b2$0?184A4a3Y3*4E0V3i0m4C3Z0l0?2M0M4H4O1$4E0b4S4U4o0?0f0s2m0t0y0i0N4!3)4$0?4R4M4T4n2$4W041A0N4Z4M4*4_040z4)4~1M0o0?0T020x0M0j5a4I2@500l0o134@304Q3p0m5v4}5l3d0?2S2P0y2d5k4#5c0?0p5F4^1M0J0U0?3.2V065w5x5G5z042S2l0n0u5K305d045J4|565M5O043%4M065S5w5,0.4d040f3u5$3s0k5A5~3S0o4k042M624+5{4.0M4:4=5r4D4`5u5T5@5b5_4X4g5+6l014E4G556q644K0o542V5U5L5W0t535!2k5N0t0i6f3S6s6L695#6u5y6r0?0z596p6S6w045}6X5V6T4F6O4J5X681$5(020r5i6-2@5A2k0v5!6*1M4E0z4{5R6j726B305`2k0M4;4L6A5^010I0v0?0F330N0t6i727c605X280B5D6z2/743s5(5*7b6q7o5B7r5E6$6C015(0C6?5W6Q71737n6^5Z7M7u7c7x7K31615;5?5v7c760Y797W7B7q7s7W7x7y7T7A4K3z0e480t2r5Y2r412s3_192v810s1H7`3?1q2:0e0X0Z0#0N04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)