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 ?
.128013be%nvi3mo_tPhklpwf(: cga=ry0Su/)2s1d050K0c0l0y0g0p0I0v0w0p0y0I0I0z010l0g0q010406050I0E0i0i0y0A0B040D0j0p0E0#0j0e050F0,0.0:0=0*0q0405150~180F150*0K0g0f0T0V0X0Z0n0g0x0n0p1m0n0l0(050O0b0p0c1h0W0Y011l1n1p1n0l1v1x1t0l0A160l0n0T0^0I0q0y0e0Z0H011z1j010s0Q0c0e0y0i0c1t1S1U1Z1B1$1x1)1+0(0a0v0m0A0j0q0j0I0g0{0e0v0M1Q0A0A0c0w230~1.0e160F1O2g1L1N1M1u0K1:0Z1p0e1(201t1e1g0U1A2q0g2s0e0j2w1t0q29162e2g2K0+1T242y1!2D0A0/0p0(0J2d2O0)2N1/2Q1B2S2U0(0H2Y1U2g2H0c2g2w2j0K1N2o2%0Z0w2E1,162?172I2#2f2-352}0M2J2O2p010o0(0M0s363a2$1i1B0r0(0v3i343c0e0s3f1f0g211w0c0k1T0A0k0h3q2e3c0%040t3G3b2{010e0(0}0 2Z3r3O3J0G0u3i060v3$3p3H3O3e04290l0E0A3S2K3(3N3l0Z3Q043;2Z3?3k2z010j0(0d3i3~2P3^010i0g0(3F3T2.463c42040z0z453V484a0(0C3!0~382;19330F312h2^0~2k4C0y3z2=1f2!4y0N0P0R04.
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
.128013beqên,4é9vi+3mo5_tLR;Phklpwf(: cg.a=ry0S6Iu/72)s18d050Z0c0s0J0l0z0W0F0G0z0J0W0W0K010s0l0A010406050W0R0o0o0J0L0M040O0p0z0R0@0p0f0F020J0o0A0v0F0u0c110L0d0R0c0W050S0~1012140|0A04051z1s1C0S1z0|0Z0l0k0,0.0:0=0x0l0H0x0z1Q0x0s0`050%0b0z0c1L0/0;011P1R1T1R0s1Z1#1X0s0L1A0s0x0,170W0A0J0f0=0U011%1N010C0)0c0f1f0c1X1}1 241)271#2a0o2c040a0F0w0L0p0A0p0W0l1a1c0#1{0L0L0c0G2x1s2e0f1A0S1_2J1?1^1@1Y0Z2g0=1T0f292u1X1I1K0-1(2T0l2V0f0p2Z1X0A2C1A2H2J2;0}1~1c2#252*0L110z0`0X2G2^0{2@2f2`1)2|2~0`0U321 342H2S01390J2 040n3d2I0|3g370=3j3l0h3o3f2^3h3u0`0q3x3q3z3s3i0p2}3k0`0P3E352_1M383J3a040T3O3r3R3t3T3L040Y3X3G3Z3I3K3l0j3x1D2/1s2Z2M0Z1^2R3H0G2+2m0!1J1A2.0c2:333:3}0#45363+0y0`0#0C3:3Y2$010B0`0F4h3*4j0f0C4e1J0l2v1!0c0r1~0L0r3n1t464i250_040D4o4b4q0`0f4L3Q4j4I0V0E3E0F4X4n4G1)4d040B1P1#3x4Z4p2{4O4+3P3h0p0`020H0s0v4:4!0=0o0l300N4Q3h4I4V4E3e064Y5a4,4M4.040G0x0(2V4|4-1)4?040K5k5d380b0`0W1?533H4I4K572I4;3H0f4/5B4a4R4H0`0V4W5b4X5D3+5F040W0p100c5q5J5m0`5p5H5c5Z4~5004525H595O5(3h4$0C3J5Y3A0`5g0l0C0C2C5_3H0p4l042(615R5{5h2(5X5H5Q4S0`562;5/5:4Y6e254$5}674N5f1P5~605%6m5m642*0s6q25630`666w4}010W2204021o0p4`0N0n0P0j6N0R6P4{6d6I555N6k5O6x3t5u5V2l6C5!5o6.6*5T6,6c2;5;620`0m6;3i5t650f6B6Z5l0=5z5x686s5}5 6^4F75014T6$5b6)3i5G6_7k5n5$7n6I5S5U5W7i7k4$2C0s0R0L4P6H7f5S7D7r7f6E716~77745r5*0`5-2?6!0`0g6~4 0`4D7T7f4I7W7E7P017Y043N7O5)7g7V7X5+3/7/545L3O0S48443;7 0S3@1s0s3_842P2K0J4x2J3@1y5I3h2C0o0r0C0J0y4y0x0n0`1k1m1o1q0F6h461F341z0Q0z0F1q0s0F2t0:0l4x0F0Z002s0@4 0W0c0L0,0$0s1$0J0A2.0p5g1$290F0p0b8R0L0k1 8F1o000)8D5v0F2(19288L1$8W0f0l8T3}1g8W8}0+5|6u8u057~3h1+1S1U1W8f3H7,7S8x7~040g4n9c3H9e1-1V2d7f7,7!9m3~9o9q3~9d1U9u9h7k7,7.2?7}9B8D8F9b9E9s9G9g9w7*7,7^9M9n0F0z3J0+0#0+0J0Z1I2x0+0D0i0%728L4u4w1#0+4A9D2z9T1,9V9i3+9y3:9N499p0)9|0c0R0k298F0e1?1$1Q2|0i0W0I0V0I1D8z040t0J0F5@0f2E0l1b8}0k0laf0F3k9(8var1H1J9Fa11.9W7:2i292b0`2o0O0G0L0^8F0w0M1_1b3:435I2=469n7x4e0c4g7_3H644na@5R4s042Z4v8J1#4z124C786f4Jb65e7H7e7*4T8w585aa:4%4)7d3e6`79bbbm7o4@4_6Y7I9X5+0X9l3e7k6#5.6k7k5S5g5ibl2Ibn4j7p6~0f705v0Lb91)7N7#7*7GbT767{bD5:bF6+7v7)7:bNb+3h9k7ibh6I5?5^b.5E697b6vbvb,646Gb~5`6sbIbZ7;04bf3p6%6lb?6Fa?c2b`7a996~7K6Ackc0bpbK7k6K4@6O6Q6S6Ucububc7:bC6icb6(7sb)6-b_3+b-cg797ucIcMbM6|bO702(73bWcB0`5AcXc3987cc67hb$cF7F7m33bL6D5#cT6F72c)cZc67t6@c_045Mc+c:4#0`7z7Bcp04d26=d7d9017Kc1c/bBc`a{4jb:dj5K9o7?7Zc~7(cQ259Kdrdp049ZcA7`c 7|a/1F3=82410|820$0(0*04.
.128013beqên,4é9vi+3mo5_tLR;Phklpwf(: cg.a=ry0S6Iu/72)s18d050Z0c0s0J0l0z0W0F0G0z0J0W0W0K010s0l0A010406050W0R0o0o0J0L0M040O0p0z0R0@0p0f0F020J0o0A0v0F0u0c110L0d0R0c0W050S0~1012140|0A04051z1s1C0S1z0|0Z0l0k0,0.0:0=0x0l0H0x0z1Q0x0s0`050%0b0z0c1L0/0;011P1R1T1R0s1Z1#1X0s0L1A0s0x0,170W0A0J0f0=0U011%1N010C0)0c0f1f0c1X1}1 241)271#2a0o2c040a0F0w0L0p0A0p0W0l1a1c0#1{0L0L0c0G2x1s2e0f1A0S1_2J1?1^1@1Y0Z2g0=1T0f292u1X1I1K0-1(2T0l2V0f0p2Z1X0A2C1A2H2J2;0}1~1c2#252*0L110z0`0X2G2^0{2@2f2`1)2|2~0`0U321 342H2S01390J2 040n3d2I0|3g370=3j3l0h3o3f2^3h3u0`0q3x3q3z3s3i0p2}3k0`0P3E352_1M383J3a040T3O3r3R3t3T3L040Y3X3G3Z3I3K3l0j3x1D2/1s2Z2M0Z1^2R3H0G2+2m0!1J1A2.0c2:333:3}0#45363+0y0`0#0C3:3Y2$010B0`0F4h3*4j0f0C4e1J0l2v1!0c0r1~0L0r3n1t464i250_040D4o4b4q0`0f4L3Q4j4I0V0E3E0F4X4n4G1)4d040B1P1#3x4Z4p2{4O4+3P3h0p0`020H0s0v4:4!0=0o0l300N4Q3h4I4V4E3e064Y5a4,4M4.040G0x0(2V4|4-1)4?040K5k5d380b0`0W1?533H4I4K572I4;3H0f4/5B4a4R4H0`0V4W5b4X5D3+5F040W0p100c5q5J5m0`5p5H5c5Z4~5004525H595O5(3h4$0C3J5Y3A0`5g0l0C0C2C5_3H0p4l042(615R5{5h2(5X5H5Q4S0`562;5/5:4Y6e254$5}674N5f1P5~605%6m5m642*0s6q25630`666w4}010W2204021o0p4`0N0n0P0j6N0R6P4{6d6I555N6k5O6x3t5u5V2l6C5!5o6.6*5T6,6c2;5;620`0m6;3i5t650f6B6Z5l0=5z5x686s5}5 6^4F75014T6$5b6)3i5G6_7k5n5$7n6I5S5U5W7i7k4$2C0s0R0L4P6H7f5S7D7r7f6E716~77745r5*0`5-2?6!0`0g6~4 0`4D7T7f4I7W7E7P017Y043N7O5)7g7V7X5+3/7/545L3O0S48443;7 0S3@1s0s3_842P2K0J4x2J3@1y5I3h2C0o0r0C0J0y4y0x0n0`1k1m1o1q0F6h461F341z0Q0z0F1q0s0F2t0:0l4x0F0Z002s0@4 0W0c0L0,0$0s1$0J0A2.0p5g1$290F0p0b8R0L0k1 8F1o000)8D5v0F2(19288L1$8W0f0l8T3}1g8W8}0+5|6u8u057~3h1+1S1U1W8f3H7,7S8x7~040g4n9c3H9e1-1V2d7f7,7!9m3~9o9q3~9d1U9u9h7k7,7.2?7}9B8D8F9b9E9s9G9g9w7*7,7^9M9n0F0z3J0+0#0+0J0Z1I2x0+0D0i0%728L4u4w1#0+4A9D2z9T1,9V9i3+9y3:9N499p0)9|0c0R0k298F0e1?1$1Q2|0i0W0I0V0I1D8z040t0J0F5@0f2E0l1b8}0k0laf0F3k9(8var1H1J9Fa11.9W7:2i292b0`2o0O0G0L0^8F0w0M1_1b3:435I2=469n7x4e0c4g7_3H644na@5R4s042Z4v8J1#4z124C786f4Jb65e7H7e7*4T8w585aa:4%4)7d3e6`79bbbm7o4@4_6Y7I9X5+0X9l3e7k6#5.6k7k5S5g5ibl2Ibn4j7p6~0f705v0Lb91)7N7#7*7GbT767{bD5:bF6+7v7)7:bNb+3h9k7ibh6I5?5^b.5E697b6vbvb,646Gb~5`6sbIbZ7;04bf3p6%6lb?6Fa?c2b`7a996~7K6Ackc0bpbK7k6K4@6O6Q6S6Ucububc7:bC6icb6(7sb)6-b_3+b-cg797ucIcMbM6|bO702(73bWcB0`5AcXc3987cc67hb$cF7F7m33bL6D5#cT6F72c)cZc67t6@c_045Mc+c:4#0`7z7Bcp04d26=d7d9017Kc1c/bBc`a{4jb:dj5K9o7?7Zc~7(cQ259Kdrdp049ZcA7`c 7|a/1F3=82410|820$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 :
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)