Multiple

Soient \(a\) et \(b\) deux entiers positifs.

On dit que \(a\) est un multiple de \(b\) s'il existe un autre entier \(k\) tel que \(a =k \times b\).

On demande d'écrire une fonction est_multiple qui :

  • prend en paramètres deux entiers strictement positifs a et b ;

  • renvoie True si le premier est un multiple du second, False dans le cas contraire.

Python propose une solution native détaillée ci-dessous pour répondre à cette question.

Solution native

Il suffit en effet de vérifier que le reste de la division euclidienne de \(a\) par \(b\) vaut \(0\).

L'expression Python renvoyant le reste de la division de a par b est a % b.

Une solution native serait donc :

🐍 Script Python
def est_multiple(a, b):
    return a % b == 0

Cette solution ne permet toutefois pas de répondre au cas \(b = 0\) (il est impossible de diviser par \(0\)).

On propose de raisonner différemment. Pour ce faire, on gère immédiatement le cas \(b = 0\) en observant que le seul multiple de \(b = 0\) est \(a = 0\). Ce cas particulier étant traité :

  • on crée une variable multiple prenant initialement la valeur 0 ;

  • tant que multiple est strictement inférieur à a, on ajoute b à la valeur de multiple ;

  • en fin de boucle on teste l'égalité de multiple et a : s'ils sont égaux, a est un multiple de b. Sinon, a n'est pas un multiple de b.

Exemples
>>> est_multiple(0, 0)
True
>>> est_multiple(5, 0)
False
>>> est_multiple(10, 2)
True
>>> est_multiple(10, 10)
True
>>> est_multiple(2, 10)
False
>>> est_multiple(7, 3)
False
assert ?

Le mot clé assert est utilisé en Python afin de vérifier que des propositions sont vraies.

Ainsi, l'instruction assert 3 + 5*7 == 38 permet de vérifier que l'expression 3 + 5*7 est bien évaluée à 38.

Si c'est le cas, le programme continue de se dérouler normalement. Dans le cas contraire, le programme est interrompu et une erreur est signalée.

La vidéo ne s'affiche pas... ?

Il peut arriver que les vidéos ne s'affichent pas sur des navigateurs basés sur Chrome, ou si un ad-blocker est activé sur le navaigateur. Essayer avec un autre navigateur si vous êtes dans ce cas (FireFox, typiquement), ou désactivez l'ad-blocker.

###(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 : 10/10

.128013s3_8ufvy n7aêS1me(P24:twihE)6Oo;bcdg/T0làqp.rFL-,=+k95Rxé050J0r0x0m0z0O0b0j0I0O0m0b0b0Y010x0z0R010406050b0f0q0q0m0T0i040o0F0O0f0}0F0k0j020m0q0R0G0j0%0r170T0Q0f0r0b050L1416181a120R041y1F051I0L1I1K1F120J0z0h0=0@0_0{0A0z0K0A0O1Y0A0x10050-0H0O0r1T0^0`011X1Z1#1Z0x1+1-1)0x0H0F0J1a1*0T1G0x0A0=1d0b0R0m0k0{0u011/1V010g0/0r0k1l0r1)2a2c2h1;2k1-2n0q2p040a0j0t0T0F0R0F0b0z1g1i0+280T0T0r0I2K1y2r0k1G0L262W0x2423250J2t0{1#0k2m2H1)1Q1S0?1:2*0z2,0k201R1)0R2P1G2U2W31132b1i2=2i2`0T170O100j0p2T3511342s371;393b3d0u3g2c3i2U2)013n0m3c040j0c3r2V123u3l0{3x3z0j0v3D3t353v3J3d0$3N3F3P3H3w0F3a3y3d0D3U3j361U3m3Z3o3A0l3(3G3+3I3-3#3A0e3;3W3?3Y3!3K0#3|3k3~3R040p0N433*2?3 3.0p3f1z3h3V444c460p3q4h3s4j4b383^3z0p3C4p2V1H2 1y2:2Z0J2%3v0I202z0*1R1G2~0r303h3N054I0+4Q4k2i0!100+0g4S3=4c0y3d4%3}4l0g101w0x0d0q0f0O0}0R1-4,4X1;0 040s4}4s3m100m533v500X3N0j3)3Q100H583X500C0w3U0j5o5d4(4Y100z4$4y3A5e3X0k5g5c5y3~0F100Y0Y5C5r1;0q0z10495w5D4c505m5w065p5X5q4-5s045u5J5!5504575w5Z4~0{5F045H5(5/015M5O5i3~5T5n5Y605R5#2P0x0f0T0k5@540{0!0I100M0T1v5 615K6b4:0:0r5|5S105U315W606j5)6l046466685-621;6c100U3y0b6o5V5X6E3I104@4_0~4|6D6k015;5I6V6x5_5N045P6t6N6W4Z040y1X6U315.6a3w6Q4^4`6;3h6?3v5;024_0G695f5+6p2i5~6M6v6O6^046R6{6L6=7c6Y745z6_6S4{7h6}7j100Z7l455B7a5o7c6-5%6!5^5A7e6`6T7q3s6~3X6Y6Z7i6W7F5,336W796*7b6,106A677v4c6G046f6h7y7L3~6-0r6n774 6r6i5Y7A7Z0,6B7$4Y6d046I7;5V1y4U4P4A870L4D1y0x4F8c2#2X1 212Z0m1,894D1E4W6@2P0q0d0g0m0!0r0d0A0c101q1s1u1w0j6s4R1L3i1F0V0m0j0b1d1f0z1h0j0R0r1f0j0n2!1.3y0O0)0K0)0r0S1H8L040B1i0r0g0g0,0X0j0P0j0+0f0(0j2P2~0z6K0b8`8U8?8^2R1v0j0f1i0x4;0j0,0j0O008U2P0k0h0F0z1.4T4J3v1?1!1$1(8q3v7(7*7J4z0L863A2I0=7:0f0z0W0I0z9i0b0x0j0)0h3y0f0)8{5d869w1$1^1%2q6#9D6g9F2W9I9i9U9u2M3X9x9*9A7A80826K4S9H4J9J000/9S9U9W9Y9!8|9^1.9`9)9z9,5^7(a09:85a48-8K8p0E1i8W8Y0J1h0I8}0z2P2R1r2m9U9o9q0i0r0T9k1.0T0)144_0m9U0J0f0j9g9T8H8.1P1R9(1@ai9B3X2v2m2o102B0o0I0T0~9U0t0i261h4S4O8q324R9I7`044#7=0{4*5x5Q7Q4/044;4?7H7pb6015052ba6#7Rbi5a7~5*5hbm5^5k8I4q6+9-5t5v7Pbn7xbD5^7Nbr0{5`6(bp7@7,bzak7{657#7D6@bobV6 5G7O7r6WbL6)4ibQbW7n7gbJ6X5Gb/b(7^b36/2lb/7F7f7Ib/7072b{56bN04bx3E6v7-4lb-b~bY7Mb;cd7w7G7o6|7K7s047ucgca04bt7W7z7Y6z7|bUbGb,cib.cp2ibIcD5*7S4iao4V882W8o4C0,0.0:04.

###(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 : 10/10

.128013s3_8ufvy n7aêS1me(P24:twihE)6Oo;bcdg/T0làqp.rFL-,=+k95Rxé050J0r0x0m0z0O0b0j0I0O0m0b0b0Y010x0z0R010406050b0f0q0q0m0T0i040o0F0O0f0}0F0k0j020m0q0R0G0j0%0r170T0Q0f0r0b050L1416181a120R041y1F051I0L1I1K1F120J0z0h0=0@0_0{0A0z0K0A0O1Y0A0x10050-0H0O0r1T0^0`011X1Z1#1Z0x1+1-1)0x0H0F0J1a1*0T1G0x0A0=1d0b0R0m0k0{0u011/1V010g0/0r0k1l0r1)2a2c2h1;2k1-2n0q2p040a0j0t0T0F0R0F0b0z1g1i0+280T0T0r0I2K1y2r0k1G0L262W0x2423250J2t0{1#0k2m2H1)1Q1S0?1:2*0z2,0k201R1)0R2P1G2U2W31132b1i2=2i2`0T170O100j0p2T3511342s371;393b3d0u3g2c3i2U2)013n0m3c040j0c3r2V123u3l0{3x3z0j0v3D3t353v3J3d0$3N3F3P3H3w0F3a3y3d0D3U3j361U3m3Z3o3A0l3(3G3+3I3-3#3A0e3;3W3?3Y3!3K0#3|3k3~3R040p0N433*2?3 3.0p3f1z3h3V444c460p3q4h3s4j4b383^3z0p3C4p2V1H2 1y2:2Z0J2%3v0I202z0*1R1G2~0r303h3N054I0+4Q4k2i0!100+0g4S3=4c0y3d4%3}4l0g101w0x0d0q0f0O0}0R1-4,4X1;0 040s4}4s3m100m533v500X3N0j3)3Q100H583X500C0w3U0j5o5d4(4Y100z4$4y3A5e3X0k5g5c5y3~0F100Y0Y5C5r1;0q0z10495w5D4c505m5w065p5X5q4-5s045u5J5!5504575w5Z4~0{5F045H5(5/015M5O5i3~5T5n5Y605R5#2P0x0f0T0k5@540{0!0I100M0T1v5 615K6b4:0:0r5|5S105U315W606j5)6l046466685-621;6c100U3y0b6o5V5X6E3I104@4_0~4|6D6k015;5I6V6x5_5N045P6t6N6W4Z040y1X6U315.6a3w6Q4^4`6;3h6?3v5;024_0G695f5+6p2i5~6M6v6O6^046R6{6L6=7c6Y745z6_6S4{7h6}7j100Z7l455B7a5o7c6-5%6!5^5A7e6`6T7q3s6~3X6Y6Z7i6W7F5,336W796*7b6,106A677v4c6G046f6h7y7L3~6-0r6n774 6r6i5Y7A7Z0,6B7$4Y6d046I7;5V1y4U4P4A870L4D1y0x4F8c2#2X1 212Z0m1,894D1E4W6@2P0q0d0g0m0!0r0d0A0c101q1s1u1w0j6s4R1L3i1F0V0m0j0b1d1f0z1h0j0R0r1f0j0n2!1.3y0O0)0K0)0r0S1H8L040B1i0r0g0g0,0X0j0P0j0+0f0(0j2P2~0z6K0b8`8U8?8^2R1v0j0f1i0x4;0j0,0j0O008U2P0k0h0F0z1.4T4J3v1?1!1$1(8q3v7(7*7J4z0L863A2I0=7:0f0z0W0I0z9i0b0x0j0)0h3y0f0)8{5d869w1$1^1%2q6#9D6g9F2W9I9i9U9u2M3X9x9*9A7A80826K4S9H4J9J000/9S9U9W9Y9!8|9^1.9`9)9z9,5^7(a09:85a48-8K8p0E1i8W8Y0J1h0I8}0z2P2R1r2m9U9o9q0i0r0T9k1.0T0)144_0m9U0J0f0j9g9T8H8.1P1R9(1@ai9B3X2v2m2o102B0o0I0T0~9U0t0i261h4S4O8q324R9I7`044#7=0{4*5x5Q7Q4/044;4?7H7pb6015052ba6#7Rbi5a7~5*5hbm5^5k8I4q6+9-5t5v7Pbn7xbD5^7Nbr0{5`6(bp7@7,bzak7{657#7D6@bobV6 5G7O7r6WbL6)4ibQbW7n7gbJ6X5Gb/b(7^b36/2lb/7F7f7Ib/7072b{56bN04bx3E6v7-4lb-b~bY7Mb;cd7w7G7o6|7K7s047ucgca04bt7W7z7Y6z7|bUbGb,cib.cp2ibIcD5*7S4iao4V882W8o4C0,0.0:04.