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
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 ?
.128013(lbsSetphrdf1%uma"o0vg_/3=in
k:)y 2Pc030f0a0b0l0v06080C0F060l08080u0m0b0v0c0m020x03080j0k0k0l0e0B02090n060j0W0n0w030s0%0(0*0,0#0c02030 0^120s0 0#0f0v0p0O0Q0S0U0d0v0q0d061g0d0b0Z030J07060a1b0R0T0m1f1h1j1h0b1p1r1n0b0e100b0d0O0/080c0l0w0U0D0m1t1d0m0g0L0a0w0l0k0a1n1M1O1T1v1W1r1Z1#0Z040C0E0e0n0c0n080v0=0w0C0H1K0e0e0a0F1|0^1'0w100s1I291F1H1G1o0f1)0U1j0w1Y1_1n181a0P1u2j0v2l0w0n2p1n0c221027292D0$1N1}2r1U2w0e0)060Z0h262H0!2G1(2J1v2L2N0Z0D2R1O292A0a292p2c0f1H2h2W0U0F2x1$102+112B2U282$2}2=0H2C2H2i0m0y0Z0H0g2~020C2|340w0g37190v1`1q0a0r1N0e0r0t3a3d2:0m0Y02053s273e0Z0@0_2S3t1c1v3w0A0z3a0x0C3O3c3A3u3602220b0j0e3D2D3Q333u0w3C3a3#2V3H0U0n0Z0i3)3G2s0m0k0v0Z3r3E2%3*2I3,0m3.020u0u3;3R403^0Z0o3M0^302)132{0s2_2a2-0^2d4m0l3l2*192T4i0I0K0M02.
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 à compléter
.128013(lbsSet.ph;rd45f'1890uma"ov+w7g,_/R3=in
6êk:é)y q2IPcL030h0a0b0s0G06080Q0V060s08080F0t0b0G0d0t020I03080q0r0r0s0g0P02090u060q0:0u0H0Q000s0r0d0f0Q0D0a0}0g0R0q0a08030C0`0|0~100^0d02031v1o1y0C1v0^0h0G0v0(0*0,0.0e0G0z0e061M0e0b0?030!07060a1H0+0-0t1L1N1P1N0b1V1X1T0b0g1w0b0e0(13080d0s0H0.0S0t1Z1J0t0k0$0a0H1b0a1T1^1`1 1#221X250r2702040Q0U0g0u0d0u080G16180Y1?0g0g0a0V2s1o290H1w0C1;2E1.1:1/1U0h2b0.1P0H242p1T1E1G0)1!2O0G2Q0H0u2U1T0d2x1w2C2E2+0_1_182W202#0g0}060?0m2B2/0@2.2a2;1#2?2^0?0S2|1`2~2C2N0t330s2_020E372D0^3a310.3d3f0i3i392/3b3o0?0j3r3k3t3m3c0u2@3e0?0J3y2 2:1I323D34020y3I3l3L3n3N3F020n3R3A3T3C3E3f0o3r1z2)1o2U2H0h1:2M3B0V2$2h0X1F1w2(0a2*2}3)3?0Y3~303#0L0?0Y0k3r0Q3J3u0k471F0G2q1W0a0B1_0g0B3h1p3 3S2X0t0=02053)4s2=0?0H4y3!4t4v0O0M3y0Q4K4b4z1#46020x1L1X4a4c3B0H4B4U4N0.0u0?000z0b0f4Z4E200r0G2`0p4D444F0?4I4q380I4L4}4M4,320?0V0e0#2Q4+4?204$020F573K4t0H070?081.4=5e204v4x4`2D4V3#4X024C5q435m1#4G4J4~4K5s5f5i0u0|0a5d3b5a5c5x4 581#4.0?4;5x4|5D5Q5z0.4P0k3D5L4W521L0k0k2x5(3#0u0x0?2Z5/5G0253555K5x5F5n4^5C5Y4L5 4O5?495P653n5*0G5,5.694!0t5;4B0u0b5^595=025@6g500.081}02001k6l0f0p0E0J0o6y0q6A5l3b4v4_2+5X635D6a3c5H5J6n1#5N6V6b02085I2g6Y6i0?0w6'5g5?0H6m5~6h5o6J5)5`5+5-5}2-6;0?0O624~6R5u5w2+5Z5M0?5O75726T6%5W4}6R4P2x0b0q0g742}766@7m387o5:6p6r7a6}4w6?3#5T025V6|6t4u0?0A6'7B4p7E5R0.4v7I6s7N0t7B3H6:7F7P7J4/023(7W7S5B5W1o413}3*7,0C3-1o0b3/7;2K2F0s4j2E3-1u5y3b2x0r0B0k0s0L4k0e0E0?1g1i1k1m0Q6M3 1B2~1v0T060Q1m0b0Q2o0,0G4j0Q0h0l2n0:4.080a0g0(0Z0b1Y0s0d2(0u531Y240Q0u078B0g0v1`8p1k0l0$8n5j0Q2Z15238v1Y8G0H0G8D3?1c8G8)0'536d6`0'037+3b1%1O1Q1S7 3B7B7D8h7+020A4b8|3B8~1(1R287F7K3)0C97998{3@8}1Q9e916R7U9j978n8p9n2u9c9q909g7S7B7$2-9k3@020Q063D0'0Y0'0s0h1E2s0'050N0!6.8v4g4i1X0'4m9a9o9B1'9D927A7!7L969K990$9(0a0q0v248p0K1.1Y1M2?0N080c0O0c1z8j020W0s0Q5%0H2z0G178)0v0G9~0Q3e9O8faa1D1F9p9-1)9E5!21232f2h2j090V0g0;8p0U0P1;173)3|5y2,3 977g470a687w7F0H4e022U4h8t1X4l0~4o7z4@7y7%aA73a.60024H70aV4Q4S6{7n7b5v6'5a4'4)7Z4:a@5A617e5Yb15{2Za 7r6R6X7Ra=5h6!5ka;6K0?5p7Ma=4Ybq3B7(6N63b16#6Ubl775bb77C707f6h5$5'bF6@8@6ebh2D7s4t6j6q7qbUbe54bgb97ObbbA6P5EbM676+6cbSb36p2#6/aZ7SbX7vb06h6v4%6z4)6C6E6G6Ibx3#6LbKb+bV4A6!6$bT9Lbj78b/cebEb_aA5a6*bP5tbn2Zb^4r7Xbsb'6S6^8^6fbubra_cab,a!bwcnbG79b}a!ct6.cz6=c75_bD7dcEby6~a{b-027i7kbZch6ha?crbW7uc)ccbaa:cY9:5UcS7HbI9=386R7Yc-4-7!7Vc@a/7QcL937!9Hcw7'c!7)9J427-7|3`0^7/0Z0#0%02.
.128013(lbsSet.ph;rd45f'1890uma"ov+w7g,_/R3=in
6êk:é)y q2IPcL030h0a0b0s0G06080Q0V060s08080F0t0b0G0d0t020I03080q0r0r0s0g0P02090u060q0:0u0H0Q000s0r0d0f0Q0D0a0}0g0R0q0a08030C0`0|0~100^0d02031v1o1y0C1v0^0h0G0v0(0*0,0.0e0G0z0e061M0e0b0?030!07060a1H0+0-0t1L1N1P1N0b1V1X1T0b0g1w0b0e0(13080d0s0H0.0S0t1Z1J0t0k0$0a0H1b0a1T1^1`1 1#221X250r2702040Q0U0g0u0d0u080G16180Y1?0g0g0a0V2s1o290H1w0C1;2E1.1:1/1U0h2b0.1P0H242p1T1E1G0)1!2O0G2Q0H0u2U1T0d2x1w2C2E2+0_1_182W202#0g0}060?0m2B2/0@2.2a2;1#2?2^0?0S2|1`2~2C2N0t330s2_020E372D0^3a310.3d3f0i3i392/3b3o0?0j3r3k3t3m3c0u2@3e0?0J3y2 2:1I323D34020y3I3l3L3n3N3F020n3R3A3T3C3E3f0o3r1z2)1o2U2H0h1:2M3B0V2$2h0X1F1w2(0a2*2}3)3?0Y3~303#0L0?0Y0k3r0Q3J3u0k471F0G2q1W0a0B1_0g0B3h1p3 3S2X0t0=02053)4s2=0?0H4y3!4t4v0O0M3y0Q4K4b4z1#46020x1L1X4a4c3B0H4B4U4N0.0u0?000z0b0f4Z4E200r0G2`0p4D444F0?4I4q380I4L4}4M4,320?0V0e0#2Q4+4?204$020F573K4t0H070?081.4=5e204v4x4`2D4V3#4X024C5q435m1#4G4J4~4K5s5f5i0u0|0a5d3b5a5c5x4 581#4.0?4;5x4|5D5Q5z0.4P0k3D5L4W521L0k0k2x5(3#0u0x0?2Z5/5G0253555K5x5F5n4^5C5Y4L5 4O5?495P653n5*0G5,5.694!0t5;4B0u0b5^595=025@6g500.081}02001k6l0f0p0E0J0o6y0q6A5l3b4v4_2+5X635D6a3c5H5J6n1#5N6V6b02085I2g6Y6i0?0w6'5g5?0H6m5~6h5o6J5)5`5+5-5}2-6;0?0O624~6R5u5w2+5Z5M0?5O75726T6%5W4}6R4P2x0b0q0g742}766@7m387o5:6p6r7a6}4w6?3#5T025V6|6t4u0?0A6'7B4p7E5R0.4v7I6s7N0t7B3H6:7F7P7J4/023(7W7S5B5W1o413}3*7,0C3-1o0b3/7;2K2F0s4j2E3-1u5y3b2x0r0B0k0s0L4k0e0E0?1g1i1k1m0Q6M3 1B2~1v0T060Q1m0b0Q2o0,0G4j0Q0h0l2n0:4.080a0g0(0Z0b1Y0s0d2(0u531Y240Q0u078B0g0v1`8p1k0l0$8n5j0Q2Z15238v1Y8G0H0G8D3?1c8G8)0'536d6`0'037+3b1%1O1Q1S7 3B7B7D8h7+020A4b8|3B8~1(1R287F7K3)0C97998{3@8}1Q9e916R7U9j978n8p9n2u9c9q909g7S7B7$2-9k3@020Q063D0'0Y0'0s0h1E2s0'050N0!6.8v4g4i1X0'4m9a9o9B1'9D927A7!7L969K990$9(0a0q0v248p0K1.1Y1M2?0N080c0O0c1z8j020W0s0Q5%0H2z0G178)0v0G9~0Q3e9O8faa1D1F9p9-1)9E5!21232f2h2j090V0g0;8p0U0P1;173)3|5y2,3 977g470a687w7F0H4e022U4h8t1X4l0~4o7z4@7y7%aA73a.60024H70aV4Q4S6{7n7b5v6'5a4'4)7Z4:a@5A617e5Yb15{2Za 7r6R6X7Ra=5h6!5ka;6K0?5p7Ma=4Ybq3B7(6N63b16#6Ubl775bb77C707f6h5$5'bF6@8@6ebh2D7s4t6j6q7qbUbe54bgb97ObbbA6P5EbM676+6cbSb36p2#6/aZ7SbX7vb06h6v4%6z4)6C6E6G6Ibx3#6LbKb+bV4A6!6$bT9Lbj78b/cebEb_aA5a6*bP5tbn2Zb^4r7Xbsb'6S6^8^6fbubra_cab,a!bwcnbG79b}a!ct6.cz6=c75_bD7dcEby6~a{b-027i7kbZch6ha?crbW7uc)ccbaa:cY9:5UcS7HbI9=386R7Yc-4-7!7Vc@a/7QcL937!9Hcw7'c!7)9J427-7|3`0^7/0Z0#0%02.
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)