facile
Divisibilité par 3
Un nombre \(n\) est divisible par \(3\) si le reste de la division euclidienne de \(n\) par \(3\) vaut \(0\) .
On se propose dans cet exercice de tester de trois manières différentes si un entier \(n\) est divisible par \(3\) .
On demande donc, dans chaque question, d'écrire une version de la fonction est_divisible_par_3 qui prend en paramètre un entier positif ou nul n et renvoie True si n est divisible par \(3\) , False dans le cas contraire.
Exemples
🐍 Script Python >>> divisible_par_3 ( 0 )
True
>>> divisible_par_3 ( 1 )
False
>>> divisible_par_3 ( 3 )
True
>>> divisible_par_3 ( 9230 )
False
>>> divisible_par_3 ( 9231 )
True
>>> divisible_par_3 ( 9232 )
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.
Version native
L'opérateur % de Python renvoie le reste de la division euclidienne des deux nombres proposés.
Ainsi, 25 % 3 est évalué à 1 car \(25 = 8 \times 3 + \mathbf{1}\) .
Contrainte
Dans cette version, on autorise l'utilisation de n % 3 .
Défi : du premier coup !
Pouvez-vous compléter cette fonction en ajoutant une seule ligne ?
.128013tf)2r3%sao iug0m1Ppnlhe=cy:v(wS/b_dk050J0x0b0j0m0v0i0l0z0v0j0i0i0y010b0m0t010406050i0n0q0q0j0f0A040F0k0v0n0#0k0u050G0,0.0:0=0*0t040~1505180G181a150*0J0m0C0T0V0X0Z0w0m0o0w0v1o0w0b0(050O0H0v0x1j0W0Y011n1p1r1p0b1x1z1v0b0H0k0J0=1w0f160b0w0T0^0i0t0j0u0Z0e011B1l010c0Q0x0u0j0q0x1v1Z1#1*1D1-1z1:1=0(0a0l0s0f0k0t0k0i0m0{0u0l0M1X0f0f0x0z2a0~1^0u160G1V2n0b1T1S1U0J1`0Z1r0u1/271v1g1i0U1C2x0m2z0u1P1h1v0t2g162l2n2R0+1!2b2F1+2K0f0/0v0(0r2k2V0)2U1_2X1D2Z2#0(0e2)1#2n2O0x2n2D2q0J2u2w010z1P1?162}192P2,2m2@3b330M2Q2V310K0(0M0c3c3g2-1k1D0E0(0l3n3a310u0c3k1h0m281y0x0I1!0f0I0g3v2l310%040D3L3h2.0Z0u0(0}0 2*3w3T013O0d0B3n060l3,3u3M3#3j042g0b0n0f3X2R3.3S3q3U3W3n3|3p2G010k0(0h413!3~010q0m0(3K3Y2^422W4b46040y0y493/4b4d0(0p3*0~3e2{17390G372o2 0~2r2q1O1Q2q0j3E2|1h2+4C0N0P0R04.
Version « en chaîne »
Dans cette version, on se propose d'utiliser la règle de divisibilité enseignée dans les petites classes :
Somme des chiffres
Un nombre \(n\) est divisible par \(3\) si et seulement si la somme de ses chiffres est divisible par \(3\) .
On peut répéter cette règle à plusieurs reprises jusqu'à ce que la somme des chiffres soit strictement inférieure à \(10\) . Dans ce cas, les seuls entiers divisibles par \(3\) sont \(0\) , \(3\) , \(6\) ou \(9\) .
Dans cette version, on parcourt les chiffres d'un entier après l'avoir converti en une chaîne de caractères comme illustré ci-dessous :
🐍 Script Python >>> n = 1234
>>> chaine = str ( n )
>>> for chiffre in chaine :
... print ( chiffre )
...
1
2
3
4
La fonction int permet de faire l'opération inverse :
🐍 Script Python >>> '1' + '2'
'12'
>>> int ( '1' ) + int ( '2' )
3
Contrainte
Dans cette version, on interdit l'utilisation de n % 3 .
Version vide Version à trous
.1280135tf4)+2IrR3,sao iug08m1P6pnl7h.e=céLy:v9ê(wq;S/b_dk050Y0G0c0o0r0C0n0q0I0C0o0n0n0H010c0r0A010406050n0s0w0w0o0j0L040U0p0C0s0@0p0B0q020o0w0A0T0q0k0G110j0S0s0G0n050V0~1012140|0A041s1z051C0V1C1E1z0|0Y0r0N0,0.0:0=0E0r0t0E0C1S0E0c0`050%0W0C0G1N0/0;011R1T1V1T0c1#1%1Z0c0W0p0Y141!0j1A0c0E0,170n0A0o0B0=0h011)1P010d0)0G0B1f0G1Z24262b1+2e1%2h0w2j040a0q0y0j0p0A0p0n0r1a1c0#220j0j0G0I2E1s2l0B1A0V202Q0c1~1}1 0Y2n0=1V0B2g2B1Z1K1M0-1*2!0r2$0B1`1L1Z0A2J1A2O2Q2{0}251c2,2c2;0j110C0`0x2N2 0{2~2m311+33350`0h39263b2O2Z013g0o36040l3k2P0|3n3e0=3q3s0e3v3m2 3o3B0`0b3E3x3G3z3p0p343r0`0z3L3c301O3f3Q3h040D3V3y3Y3A3!3S040v3(3N3*3P3R3s0O3E1B2_1s2*2T0Y2X3o0I1`2t0!1L1A2^0G2`3a3`430#4b3d3=0Z0`0#0d3`3)2-010R0`0q4n3;4p0B0d4k1L0r2C1$0G0X250j0X3u1t4c4o2c0_040Q4u4h4w0`0B4R3X4p4O0f0M3L0q4%4t4M1+4j040R1R1%3E4)4v324U4;3W3o0p0`020t0c0T4_4*0=0w0r370u4W3o4O4#4K3l064(5g4=4S4@040I0E0(2$524?1+4|040H5q5j3f0W0`0n2U593O4O4Q5d2P4`3O0B4^5H4g4X4N0`0f4$5h4%5J3=5L040n0p100G5w5P5s0`5v5N5i5)545604585N5f5U5.3o4,0d3Q5(3H0`5m0r0d0d2J5 3O0p4r042/675X615n2/5%5N5W4Y0`5c2{5^5_4(6k2c4,636d4T5l1R64665-6s5s6a2;0c6w2c690`6c6C53010n2904010u0l0z0O015D3=5b5T6q5U6D3A5A5#2s6I5*5u6.6*5Z6,6i2{5`680`0g6;3p5z6b0B6H6j6O5F6Z6x626A6^4L5r0=4Z6$5h6)3p5M6_7i5t5,7l6O5Y5!5$7g7i4,2J0c0s0j4V6N7d7j047B7p7D6K716~76747D550`5?2}750`0m6~7P3t775Q047V7C5x5:3T7Z1+4O7$7H7(017X3_7N7:7f5@1s4e4a3{7}0V3~1s0c40822V2R1_1{2T0o4D2Q3~1y5O3o2J0w0X0d0o0Z4E0E0l0`1k1m1o1q0q6n4c1F3b1z0i0C0q1q0c0q2A0:0r4D0q0Y002z0@550n0G0j0,0$0c1(0o0A2^0p5m1(2g0q0p0W8S0j0N268G1o000)8E5B0q2/192f8M1(8X0B0r8U431g8X8~0+79658v057|3o1-1U1W1Y8g3O7X7R8y7|7#4t9d3O9f1/1X2k7O5;4J2}0V9o0m9q449e1W9u9i7i7X3U6j9B44048E8G9c9F9s9H9h9w7:7=3`9O4f0q0C3Q0+0#0+0o0Y1K2E0+0Q0J0%728M4A4C1%0+4G9E2G9V1.9X9j3=7X9z9n9P9D0)9~0G0s0N2g8G0P2U1(1S330J0n0F0f0F1B8A040K0o0q5}0B2L0r1b8~0N0rah0q3r9*8wat1J1L9Ga31:9Y5/2d2f2r2t2v0U0I0j0^8G0y0L201b3`495O2|4c9o7v4k0G4m7@aT6a4ta_3H4y042*4B8K1%4F124I7+7e0`5G7S7D5Y7G7c7^5R8x5e5ga=4-4/7b3l6`6e7F6~5t4~507W5;0x9m3l7i6#5@6q7i5Y5m5obp2Pbr4p7n6~0B705B0jb8017Mbc7:bebV7_6obG7q6+7t7%aTbPb,3o9l7gbl6O5|5~b/5K6f639abu6a6M7/aTbI6g5pa}5E6mb=5_bm6vb`bs996Bc24{6F0p73ci68c0bfbq7i6Q0`6T6V6Xb#c9bF6%6(b)6?b+cn3=b.cG6x7s6-cebO6|bQ702/cmbgaTbXcU606yb}chcXc8045ScAcCbd7k3abN6J5+cQ6L72cy4PbV7r6@c^c)b%6rb@0`7x7zcqbMbHc-cr6O7Jc1c.bDbabVb;c76!7Uby0`a8bC7T7#dl049MbYcVdkcN2c9!di6lc(3V9$7 a-3}470|800$0(0*04.
.1280135tf4)+2IrR3,sao iug08m1P6pnl7h.e=céLy:v9ê(wq;S/b_dk050Y0G0c0o0r0C0n0q0I0C0o0n0n0H010c0r0A010406050n0s0w0w0o0j0L040U0p0C0s0@0p0B0q020o0w0A0T0q0k0G110j0S0s0G0n050V0~1012140|0A041s1z051C0V1C1E1z0|0Y0r0N0,0.0:0=0E0r0t0E0C1S0E0c0`050%0W0C0G1N0/0;011R1T1V1T0c1#1%1Z0c0W0p0Y141!0j1A0c0E0,170n0A0o0B0=0h011)1P010d0)0G0B1f0G1Z24262b1+2e1%2h0w2j040a0q0y0j0p0A0p0n0r1a1c0#220j0j0G0I2E1s2l0B1A0V202Q0c1~1}1 0Y2n0=1V0B2g2B1Z1K1M0-1*2!0r2$0B1`1L1Z0A2J1A2O2Q2{0}251c2,2c2;0j110C0`0x2N2 0{2~2m311+33350`0h39263b2O2Z013g0o36040l3k2P0|3n3e0=3q3s0e3v3m2 3o3B0`0b3E3x3G3z3p0p343r0`0z3L3c301O3f3Q3h040D3V3y3Y3A3!3S040v3(3N3*3P3R3s0O3E1B2_1s2*2T0Y2X3o0I1`2t0!1L1A2^0G2`3a3`430#4b3d3=0Z0`0#0d3`3)2-010R0`0q4n3;4p0B0d4k1L0r2C1$0G0X250j0X3u1t4c4o2c0_040Q4u4h4w0`0B4R3X4p4O0f0M3L0q4%4t4M1+4j040R1R1%3E4)4v324U4;3W3o0p0`020t0c0T4_4*0=0w0r370u4W3o4O4#4K3l064(5g4=4S4@040I0E0(2$524?1+4|040H5q5j3f0W0`0n2U593O4O4Q5d2P4`3O0B4^5H4g4X4N0`0f4$5h4%5J3=5L040n0p100G5w5P5s0`5v5N5i5)545604585N5f5U5.3o4,0d3Q5(3H0`5m0r0d0d2J5 3O0p4r042/675X615n2/5%5N5W4Y0`5c2{5^5_4(6k2c4,636d4T5l1R64665-6s5s6a2;0c6w2c690`6c6C53010n2904010u0l0z0O015D3=5b5T6q5U6D3A5A5#2s6I5*5u6.6*5Z6,6i2{5`680`0g6;3p5z6b0B6H6j6O5F6Z6x626A6^4L5r0=4Z6$5h6)3p5M6_7i5t5,7l6O5Y5!5$7g7i4,2J0c0s0j4V6N7d7j047B7p7D6K716~76747D550`5?2}750`0m6~7P3t775Q047V7C5x5:3T7Z1+4O7$7H7(017X3_7N7:7f5@1s4e4a3{7}0V3~1s0c40822V2R1_1{2T0o4D2Q3~1y5O3o2J0w0X0d0o0Z4E0E0l0`1k1m1o1q0q6n4c1F3b1z0i0C0q1q0c0q2A0:0r4D0q0Y002z0@550n0G0j0,0$0c1(0o0A2^0p5m1(2g0q0p0W8S0j0N268G1o000)8E5B0q2/192f8M1(8X0B0r8U431g8X8~0+79658v057|3o1-1U1W1Y8g3O7X7R8y7|7#4t9d3O9f1/1X2k7O5;4J2}0V9o0m9q449e1W9u9i7i7X3U6j9B44048E8G9c9F9s9H9h9w7:7=3`9O4f0q0C3Q0+0#0+0o0Y1K2E0+0Q0J0%728M4A4C1%0+4G9E2G9V1.9X9j3=7X9z9n9P9D0)9~0G0s0N2g8G0P2U1(1S330J0n0F0f0F1B8A040K0o0q5}0B2L0r1b8~0N0rah0q3r9*8wat1J1L9Ga31:9Y5/2d2f2r2t2v0U0I0j0^8G0y0L201b3`495O2|4c9o7v4k0G4m7@aT6a4ta_3H4y042*4B8K1%4F124I7+7e0`5G7S7D5Y7G7c7^5R8x5e5ga=4-4/7b3l6`6e7F6~5t4~507W5;0x9m3l7i6#5@6q7i5Y5m5obp2Pbr4p7n6~0B705B0jb8017Mbc7:bebV7_6obG7q6+7t7%aTbPb,3o9l7gbl6O5|5~b/5K6f639abu6a6M7/aTbI6g5pa}5E6mb=5_bm6vb`bs996Bc24{6F0p73ci68c0bfbq7i6Q0`6T6V6Xb#c9bF6%6(b)6?b+cn3=b.cG6x7s6-cebO6|bQ702/cmbgaTbXcU606yb}chcXc8045ScAcCbd7k3abN6J5+cQ6L72cy4PbV7r6@c^c)b%6rb@0`7x7zcqbMbHc-cr6O7Jc1c.bDbabVb;c76!7Uby0`a8bC7T7#dl049MbYcVdkcN2c9!di6lc(3V9$7 a-3}470|800$0(0*04.
Version « matheuse »
Dans cette version, on se propose d'utiliser une version modifiée de la règle de divisibilité enseignée dans les petites classes.
Somme des chiffres
Un nombre \(n\) est divisible par \(3\) si et seulement si la somme de son nombre de dizaine et de son chiffre des unités est divisible par \(3\) .
On répète cette règle jusqu'à ce que cette somme soit strictement inférieure à \(10\) . Dans ce cas, les seuls entiers divisibles par \(3\) sont \(0\) , \(3\) , \(6\) ou \(9\) .
Appliquée à \(5\,832\) la règle donne (\(n \equiv r \pmod 3\) est la notation mathématique pour « le reste de la division de \(n\) par \(3\) vaut \(r\) ») :
\(\begin{align*}
5\,832 &\equiv 583 + 2 &\pmod 3 \\
&\equiv 585 &\pmod 3 \\
&\equiv 58 + 5 &\pmod 3 \\
&\equiv 63 &\pmod 3 \\
&\equiv 6 + 3 &\pmod 3 \\
&\equiv 9 &\pmod 3 \\
\end{align*}\)
Comme \(9\) est inférieur à \(10\) et est divisible par \(3\) , on peut affirmer que \(5\,832\) est divisible par \(3\) .
Il est possible de récupérer la somme envisagée en faisant n // 10 + n % 10 mais aussi, sans utiliser l'opérateur %, en faisant n - 9 * ( n // 10 ) .
🐍 Script Python >>> 5832 % 10 + 5832 // 10
585
>>> 5832 - 9 * ( 5832 // 10 )
585
Contraintes
Dans cette version :
Version vide Version à trous
.128013tf4)+2r3,%sao iug0m1P6pnlhe=cy:v9(w;S/b_dk050P0B0b0m0p0z0l0o0D0z0m0l0l0C010b0p0x010406050l0q0t0t0m0h0E040L0n0z0q0+0n0y050M0=0@0_0{0:0x04141b051e0M1e1g1b0:0P0p0G0Z0#0%0)0A0p0r0A0z1u0A0b0.050U0N0z0B1p0$0(011t1v1x1v0b1D1F1B0b0N0n0P0{1C0h1c0b0A0Z0~0l0x0m0y0)0g011H1r010c0W0B0y0m0t0B1B1)1+1:1J1?1F1_1{0.0a0o0v0h0n0x0n0l0p110y0o0S1%0h0h0B0D2g141~0y1c0M1#2t0b1Z1Y1!0P200)1x0y1^2d1B1m1o0!1I2D0p2F0y1V1n1B0x2m1c2r2t2X0;1*2h2L1;2Q0h0^0z0.0u2q2#0/2!1 2%1J2)2+0.0g2/1+2;2r2C012_0m2,040i2}2s0:302@0)33350d382t2U0B2t2J2w0P2A310D1V1|1c3m1f2V2=2s3h053r0S2W2#310Q0.0S0c3A3b1q1J0J0.0o3L3F3c320c3I1n0p2e1E0B0O1*0h0O37152:3y310-040I3S2?3N3d0.133,2~3.3U3:0e0F3h060o453R3M2M013H040J1t1F3h473T3^323`4g3~4j0n0.020r0b0K4m481;0t0p2-0s3?2$4j3:423|39464J4h3@490y4l4H044L4D494p040C4v4i4N4P2X4S314V0M0M4Y4M4x4z040u4B4Q4%3U4V0f4,4T2(4#2:4@4o0.0k4{314y4A434J4n494b2m0b0q0h3{4$5a4}045h4 5j1J0n3P042O543 0.3=4Q5o0)56044=2Z4w1J3:0j5u4j5B3+5E4Z1;5H5J495B0w4C3/0.5I4?5z015B0H5V5v040e43143C3k1d3x0M3v2u3o142x2w1U1W2w0m3#3l1n2;5=0T0V0X04.
.128013tf4)+2r3,%sao iug0m1P6pnlhe=cy:v9(w;S/b_dk050P0B0b0m0p0z0l0o0D0z0m0l0l0C010b0p0x010406050l0q0t0t0m0h0E040L0n0z0q0+0n0y050M0=0@0_0{0:0x04141b051e0M1e1g1b0:0P0p0G0Z0#0%0)0A0p0r0A0z1u0A0b0.050U0N0z0B1p0$0(011t1v1x1v0b1D1F1B0b0N0n0P0{1C0h1c0b0A0Z0~0l0x0m0y0)0g011H1r010c0W0B0y0m0t0B1B1)1+1:1J1?1F1_1{0.0a0o0v0h0n0x0n0l0p110y0o0S1%0h0h0B0D2g141~0y1c0M1#2t0b1Z1Y1!0P200)1x0y1^2d1B1m1o0!1I2D0p2F0y1V1n1B0x2m1c2r2t2X0;1*2h2L1;2Q0h0^0z0.0u2q2#0/2!1 2%1J2)2+0.0g2/1+2;2r2C012_0m2,040i2}2s0:302@0)33350d382t2U0B2t2J2w0P2A310D1V1|1c3m1f2V2=2s3h053r0S2W2#310Q0.0S0c3A3b1q1J0J0.0o3L3F3c320c3I1n0p2e1E0B0O1*0h0O37152:3y310-040I3S2?3N3d0.133,2~3.3U3:0e0F3h060o453R3M2M013H040J1t1F3h473T3^323`4g3~4j0n0.020r0b0K4m481;0t0p2-0s3?2$4j3:423|39464J4h3@490y4l4H044L4D494p040C4v4i4N4P2X4S314V0M0M4Y4M4x4z040u4B4Q4%3U4V0f4,4T2(4#2:4@4o0.0k4{314y4A434J4n494b2m0b0q0h3{4$5a4}045h4 5j1J0n3P042O543 0.3=4Q5o0)56044=2Z4w1J3:0j5u4j5B3+5E4Z1;5H5J495B0w4C3/0.5I4?5z015B0H5V5v040e43143C3k1d3x0M3v2u3o142x2w1U1W2w0m3#3l1n2;5=0T0V0X04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)