Dรฉcomposition en facteurs premiers - v2
Le cadre
Afin d'amรฉliorer notre prรฉcรฉdente fonction de factorisation,
on souhaite une sortie sous la forme d'une liste de tuple (p, e)
oรน p
est un nombre premier et e
l'exposant non nul associรฉ. Les tuples seront donnรฉs avec p
strictement croissant.
๐ Script Python
assert factorisation_v2(7) == [(7, 1)]
assert factorisation_v2(8) == [(2, 3)]
assert factorisation_v2(9) == [(3, 2)]
assert factorisation_v2(10) == [(2, 1), (5, 1)]
assert factorisation_v2(11) == [(11, 1)]
assert factorisation_v2(12) == [(2, 2), (3, 1)]
assert factorisation_v2(4953851) == [(7, 2), (17, 1), (19, 1), (313, 1)]
Cette sortie est plus proche d'une รฉcriture comme
Exercice
Coder une fonction factorisation_v2
:
- 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 pourra se contenter, ici, d'une complexitรฉ linรฉaire en
n
.
Aide
Il suffit de modifier lรฉgรจrement le script de la v1.
- Pendant le
while
interne, on compte le nombre de tourse
: l'exposant associรฉ รp
. - Aprรจs cette boucle interne, si l'exposant est non nul, on ajoute un tuple
(p, e)
.
Guide
๐ Script Python
def factorisation_v2(n):
assert n > 0
facteurs = []
p = 2
while ...:
e = ...
while ...:
n = ...
e = ...
if ...:
facteurs.append(...)
p += 1
return ...
>>>
x
x
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.128077y@ร - ;aks_v3hbP,e[61Lx%DRnfujcรจm4.wS}!2tl{]+5รฉOgroรICd/098)p:7i=(q050%0s0P0i0:0Q0k0g0F0Q0i0k0k0;010P0:0-010406050k0D0H0H0i0Y0c040L0Z0Q0D170Z0B0g020i0H0-0h0g0A0s1h0Y0?0D0s0k050(1e1g1i1k1c0-04051P1I1S0(1P1c0%0:0m0 1113150o0:0X0o0Q1*0o0P1a050`0p0Q0s1#1214011)1+1-1+0P1?1^1;0P0Y1Q0P0o1`1%010C0|0s0B1v0s010 1n0k0-0i0B150O1;2n2p2b1|2e1^2h0H2j040a0g0q0Y0Z0-0Z0k0:1q1s0^2l0Y0Y0s0F2N1I2u0B1Q0(292Z2628271=0%2w151-0B2g2K1;1Y1!101{2-0:2/0B0Z2?1;0-2S1Q2X2Z341d2o1s2^2c2}0Y1h0Q1a0g0v2W381b372v3a1|3c3e3g0O3j2p3l2X2,013q0i3f040g0n3u2Y1c3x3o153A3C0g0I3G3w383y3M3g0U3Q3I3S3K3z0Z3d3B3g0u3X3m391$3p3$3r3D0/3+3J3.3L3:3(3D0+3@3Z3_3#3%3N0*3 3n413U040v0)463-2_423;0v3i1J3k3Y474f490v3t4k3v4m4e3b3{3C0v3F4s3H3,3T4x1a0v3P4B2Z310s2Z2?2$0%282+3!0F2~2C0@1Z1Q4L333k3Q054U0^4#4n2c0j1a0^0C4%3^4f0K3g4=404o0C1a0C0i2U3$0:0k0i2N0l0m4r364?2c19040=4`4,3p1a0B5g4v1|5d0,0.3X0g5s0g4D3!4.041{0s0Y0P3Q5u5b5i045k4J5E4{2c0Z1a020X0P0h5D5v410H0:1a4c4J065t5K5h3L4~500P0s0D0Y1H5J5U4f5N040;5T5F155d0t0S5r5t5=3b1a0-5`5L1|5@5_5;5{015W1a594l5$621|5x0K1)1^665(3z5j6p5m155@5P5R6t3y6e4a5l3y5d5q5!5$6i6c0B1a0s6z3!696O5V5X045Z345#6I5s6j156l6n6N6b675)5H6R5?1a0y6-6304656)6q696a345%6u6d6T6V4$6c6F606Y6J6*6r6,6^6~5@0(0(6{3k6}3T6475766Z6K6M6;681a0T7g3v7i3!6B4j6W7m6!015x0:4;7b7j046(6|7C6w5Q5S7H7x706D3!746H7m617o044 2U5-5/7T415@0J7)4o1a0i0-0-2g0%7-5c1a0=5f4J7C6L6?7^5n1a0r7q6+7K72785o0,7l776q7 6@7L6c5@7t856 4G3X6X7n785x2S0P5.5I8h787 7#5,5.5:6W1I4)4M1T321I4O1I0P4Q8M2)2!0i1@8H0(4O1O4+6~2S0H0l4 0j0s0l0o0n1a1A1C1E1G0g6G361V3l2?3y0i0%0H1r2M0:1r0g2{0C5@1O8{8}8 2N0f170P24040!8u2P2P112l1w1^0x2M0V1T3l1P0z2p0~1^0g0-0:2S0g0^0~0F120g0=1E2p2+7C1i2M0o1h5,0x1a090=0B098b5J1G0P0g0D1s2}0H0p9C4L5W5A0,0r0g9l9.0:0G9C0p0Z0D101_4(4V3y1~1,1.1:8Y3y6$2f4%0(8G3D4 2M9z2S0k8:7w419O299R0s9T049V9X9Z6|0P9}5/9I9l9|9~9ya12P3!a4201/2t8r1a6mab7}ad4V3D2{5,0Y2/0gaYag540B9$0i9~9(0gay5.0,7,8^8X9v0B9x8;9Ga^0~0-1o0~4 0m3$8S1^0~9J0D9Lam4fao9Q55ar9U9W9Y5D9#0g955B1B2g9$4U1w2K0V9;9?0iai1B9_9{9}9 5u8Ga31.aKa77Caa6oaRae9z5A2B9$2P0Y0V0%0D9B1_4Ua@0:0%0V0Yb3bna%bDaT5Iae9=0E0Dak0D000e3ha:1W1R040W2Oah3B3$0~al0Q003B0X52ap1_bj2gb92cbbaqas9V099R0o9G0Q0R0W0M9W0,bh4J9=9}0g1E000|0gbj2.0V0{9Cce9N0Y9Pcibfav3Q9=0%9w9?1_9A9C9E0 120J0g0wbw2}0`2Ncf1|chbdcj0=cl55cn3B0g0Wcv6|0kcBa%b%1G0ka00k261r0X5y0D9zbX9Da_122Wd50Bd70g0N9s8X050:0H0X0g3B0P150b2k3!0P0K1B0Z0E5X0g0k0Y0F1(220-0k0.7e0F0%0B0J0E0k0^1-0m0Y0J2/0P0(1+0(0E0^0F8(0%2!dz8~dC0d0v0U0J0v0J0)0(5z0P0k1J0m0X0(0v0C0I0I0%0J0ke02k9d1^150.0T0v0.010(3D0#0QcDd49z2K2L8T9D000Z0p5,0B9B9%aYbqa}ar9q0gb(0F2{cH1_0i0m2Tdc0g2B0Bb=drb;d4b*d}c#0$1_d2b(eq5.bv0g0m0nb{3l8V4Y1c8V0_0{0}04.
# Tests
(insensible ร la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)