Aller au contenu

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 12=22ร—3.

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 tours e : 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 ...
def factorisation_v2(n):
...
# Tests
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)]
assert factorisation_v2(600851475143) == [(71, 1), (839, 1), (1471, 1), (6857, 1)]
assert factorisation_v2(14837457737) == [(1471, 2), (6857, 1)]
ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(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)
rounded
>>> 
 
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
ร‰valuations restantes : 5/5
.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.