facile
Nombres harshad (récursif)
Un entier naturel non nul \(n\) est dit harshad , si \(n\) est divisible par la somme des chiffres de \(n\) . Le nom de harshad a été donné par le mathématicien Dattatreya Ramachandra Kaprekar (1905 - 1986), il signifie "grande joie " en sanskrit.
On précise qu'un nombre entier \(b\) est un « diviseur » de \(a\) si le reste de la division euclidienne de \(a\) par \(b\) vaut \(0\) .
Par exemple \(18\) est un nombre harshad car \(1+8=9\) divise \(18\) . En effet \(18 =2\times (1+8)+0\) .
Le but est d'écrire une fonction permettant de déterminer si un nombre est un nombre de harshad ou non. Mais avant cela, il faudra écrire une fonction qui fait la somme des chiffres d'un nombre.
Question 1 : somme des chiffres
Écrire une fonction récursive somme_chiffres qui prend en paramètre un entier positif n et qui renvoie la somme des chiffres de n. On n'utilisera que des opérations mathématiques. On s'interdira donc de convertir n en une chaîne de caractères.
Exemples
🐍 Console Python >>> somme_chiffres ( 8 )
8
>>> somme_chiffres ( 18 )
9
>>> somme_chiffres ( 409 )
13
Contrainte
On interdit dans cet exercice d'utiliser str et sum .
Rappels sur la division euclidienne
Avec Python, on rappelle qu'il est possible de calculer le quotient d'un nombre n par 10 en faisant n // 10 .
De même, n % 10 renvoie le reste de la division euclidienne de n par 10 .
Exemple
🐍 Console Python >>> 409 % 10
9
>>> 409 // 10
40
>>> 40 % 10
0
>>> 40 // 10
4
Version vide Version à trous
.128013s3_èufvy naS1me(PV24:CjtwiDh*)Oo;bcdgx/0làqÉpQ.rL-,}=+zk%95R{é050K0p0y0l0A0P0b0j0J0P0l0b0b0#010y0A0T010406050b0f0o0o0l0W0i040m0G0P0f120G0k0j020l0o0T0H0j0,0p1c0W0R0f0p0b050N191b1d1f170T041D1K051N0N1N1P1K170K0A0h0`0|0~100C0A0L0C0P1%0C0y15050=0I0P0p1Y0}0 011$1(1*1(0y1:1=1.0y0I0G0K1f1/0W1L0y0C0`1i0b0T0l0k100t011@1!010g0@0p0k1q0p1.2f2h2m1_2p1=2s0o2u040a0j0r0W0G0T0G0b0A1l1n0:2d0W0W0p0J2P1D2w0k1L0N2b2#0y29282a0K2y101*0k2r2M1.1V1X0{1^2/0A2;0k251W1.0T2U1L2Z2#36182g1n2`2n2 0W1c0P150n2Y3a16392x3c1_3e3g150t3k2h3m2Z2.013r0l3h040c3v2!173y3p103B3D0u3G3x3a3z3M150+3P1M341D2^2(0K2,3z0J252E0/1W1L330p353l3W3)0:3;3o1Z1_0(150:0g3W3J3{100z150j413R3K3A0g150b0G1b0p0d0J1$0g0g2U1C1E3=422{0114040q483`4s0k150k4x3b434t150E0v3P060j4M474r2n3}040A404p3w4O494F4A044C4V2!4X4y2n0G15020P0y0H3P4)4E4s0o0A3i0O4D3z4u4J4%164N534?3z4R2U0y0f0W4$36554a4!5c3l4L4N3n4@4Q150p0^0p4}4a4 4K545k4P3|15585a5h4W5l3S4B4=5F4a4,040)5I5y104_4{5O4Y4s5L0$5T4*3q4d4f2D4i4k4m1B5s4F4u4w515J4Z5H5:5P015L0N0N5,4^4`040n4|5@5U2n4u0E4K1D3@3:3X6b0N3!1D0y3$6g2*2$24262(0l1;6d3!1J3_5m1_2U0o0d0g0l0(4h0C0c151v1x1z1B0j50381Q3m0f0P3m1*3m1K2I2=0k0_0f1n0p0M1w0T1=6L0j0l2p2Q1?0J3C0J6Q0p0W0j0|0j4e4g0j0:0_4j4T5*0_2R5;4s1d2O0C1c0y6$15090q0n0u0O0*0967510j1m6 0G2O6,0K1V2P2;6_6*724l2U6 6K6!2O0.0_772n792b7c7e047g7l7n360Z0`5p0f0A7E750A0%0?2;7J5^7M7b0l7d0M7f0q0O7m3P7V0J7X7Z707W0k0=2}6K7K1_7,7O7:7Q0q0u7@7o0;7W1j7|6K4_0P1*6^7*64840W7a867;0n8b360V1M6U040X6:5)7D7}7G0y7I0j0h0l1k5e4F857.7P7R8u3l0V0j0w001B0y6`1?4n7d7E6`0l6 1W0A2N7q767+8p7N8P877g7i7k8S4W2g6_83108O7/8s7?7T8T0j0F1n0P000G0I122r8Z2r2H0i2b7q9i6A8-2h8Z056a607j0*0j0)0j61693*048w6O6t0w6:6=6Q0j0p4l2V590.7V7q6;0P6?6*6*1z0G9f7 8(9001928Q7h9v8|4(8~8M788=7-9388619-046+7q9d9!9r8;8q8@8s7j9`8U996`9c9e0A9g9L1n0r9k0C9m1n9o0b9q479t8`9w5{9z629t9E1T1O04a80T0p8L3C0G0W0_2U3)4g0k7`7z8*0K0.1x4j1?0q8$1?2R6{2^8-0A7q198,aW1?9Y9 0E0j0x0f0b1z000Q7W0j6J8!a_0f9Zac9#4e7t0b2)0A2W1wad2}0g0.8paC6_a@617V2L5a7p9e2r0A6_190J7`0~1Wb79#7A8Ca)7#7%810b7V7}7`7 7(1Bbh7Y758h0@8kaGaw3m203:172b0p0l3$bU29bU2cb30i1=107/0y0Y3C1%0k0v7~7d0W0H150S0=aB6g0CbRb$0yb(0pb*6$b,b.0Lb:b=6^b^040s3Cbd9$a18?9@7g0k9`b}b 6|c1b)11c5b-1}c9bFb?cc1vb3a)8)8+0ha!7q9/9%9)8^7h953W2$b~b#cqc2c40Mc6cwb;cycb150Ua}9 8(aY8,8.1ncJci9?9*9_963wco172$b!b}bWbY1/6m1I2+bU2-b%csb+cvb/cZ9gc#606gc 6hcTd7cuc7cxdcb@2v8n919=8r9^9,c@2!dfbRd5crc3ctcWd9c8db7 ddcKdsa3887ScP6hdzdidCd8dldHczdp5Zdra2ck9+cO5:2$c c{bRc|dhd6dTdkcYcado043ud*dRd:cVcXdad@ccdKd#c=a5dw3#d|dBd~dFdmdId^e3cj9*d(6NdQd4dSebdVe1dY6vd!ehcM7icnd{c`2)d-e9cUdDd dGeq3Edyemd}eEecdWdJc:dt8_8ae7eJ1/dAeDdUd?c!efeQdM7geTdPdgeXdjdEepe#e2e%d$8teUey6j3m6l25d22$6p1=8y6H1d9Y6Ya|000@0j0k8Xb30j2g0_0k0.brambncD0W0.b.0b6^0j6!a*0f7.8p0e2D0j0.b{1?bi6_9~bm7z8B738DbM8jacaG0j0q1z7Z8YfB0L3C0ja@egc;ev9`0jb50Aa-0TbKa=fa0b000l0L7t0K0fa|a~adaXaOc,a#c.1d9:7LdLe@ej3lc*00fC0laB0j0cbQc`6T17gjay8A0j0g1m2Wg1ao9C6}5%7B749B3^9Lfefo6?aGbt8Ugn051w046;bL0j0I0}5r0NgKgB8Z7.7d2}8Z0PaFa;1Aa91d0L1aad9s9C4$9tgUcq8pb62D9#b9bbacbjbf0Oa71n2U0k0h7s1?aEfQg-3^g/9Cghay0B2h0_1=0_8K2)6KgMfRh93:hbgAb3g?7dg^8Z2L2N120g0E9Rh12rh4aca{gxfM6Z0k7HgNhp4#gz3:7u7wg1fi0_a@6{gvby0`bx75f`a+a 8Z769thrhScJapauhc8x6t0r0Gbjf#eRd%dO7o7q9oh,gq6Lh^ayh}e(0q090I0pf@0k0-dl0D0!0j0609b+0-h!5(fL1B0!h a-1p1r0H0#4M9w0$0jinc5ip5$4hhJitd%a-0909il1o1q1siA0jiC0j0O0jiDiFcWiH4gir7CiL7iiN094LixiTiBiZiXi?0ui?i#0yi%gwh%iu0ni-i/iSiziVi?iYiDi_iD8ti.iRiy0#7iim2r0Kihcwijexax0Ngl0N6Qe|0:800^04.
.128013s3_èufvy naS1me(PV24:CjtwiDh*)Oo;bcdgx/0làqÉpQ.rL-,}=+zk%95R{é050K0p0y0l0A0P0b0j0J0P0l0b0b0#010y0A0T010406050b0f0o0o0l0W0i040m0G0P0f120G0k0j020l0o0T0H0j0,0p1c0W0R0f0p0b050N191b1d1f170T041D1K051N0N1N1P1K170K0A0h0`0|0~100C0A0L0C0P1%0C0y15050=0I0P0p1Y0}0 011$1(1*1(0y1:1=1.0y0I0G0K1f1/0W1L0y0C0`1i0b0T0l0k100t011@1!010g0@0p0k1q0p1.2f2h2m1_2p1=2s0o2u040a0j0r0W0G0T0G0b0A1l1n0:2d0W0W0p0J2P1D2w0k1L0N2b2#0y29282a0K2y101*0k2r2M1.1V1X0{1^2/0A2;0k251W1.0T2U1L2Z2#36182g1n2`2n2 0W1c0P150n2Y3a16392x3c1_3e3g150t3k2h3m2Z2.013r0l3h040c3v2!173y3p103B3D0u3G3x3a3z3M150+3P1M341D2^2(0K2,3z0J252E0/1W1L330p353l3W3)0:3;3o1Z1_0(150:0g3W3J3{100z150j413R3K3A0g150b0G1b0p0d0J1$0g0g2U1C1E3=422{0114040q483`4s0k150k4x3b434t150E0v3P060j4M474r2n3}040A404p3w4O494F4A044C4V2!4X4y2n0G15020P0y0H3P4)4E4s0o0A3i0O4D3z4u4J4%164N534?3z4R2U0y0f0W4$36554a4!5c3l4L4N3n4@4Q150p0^0p4}4a4 4K545k4P3|15585a5h4W5l3S4B4=5F4a4,040)5I5y104_4{5O4Y4s5L0$5T4*3q4d4f2D4i4k4m1B5s4F4u4w515J4Z5H5:5P015L0N0N5,4^4`040n4|5@5U2n4u0E4K1D3@3:3X6b0N3!1D0y3$6g2*2$24262(0l1;6d3!1J3_5m1_2U0o0d0g0l0(4h0C0c151v1x1z1B0j50381Q3m0f0P3m1*3m1K2I2=0k0_0f1n0p0M1w0T1=6L0j0l2p2Q1?0J3C0J6Q0p0W0j0|0j4e4g0j0:0_4j4T5*0_2R5;4s1d2O0C1c0y6$15090q0n0u0O0*0967510j1m6 0G2O6,0K1V2P2;6_6*724l2U6 6K6!2O0.0_772n792b7c7e047g7l7n360Z0`5p0f0A7E750A0%0?2;7J5^7M7b0l7d0M7f0q0O7m3P7V0J7X7Z707W0k0=2}6K7K1_7,7O7:7Q0q0u7@7o0;7W1j7|6K4_0P1*6^7*64840W7a867;0n8b360V1M6U040X6:5)7D7}7G0y7I0j0h0l1k5e4F857.7P7R8u3l0V0j0w001B0y6`1?4n7d7E6`0l6 1W0A2N7q767+8p7N8P877g7i7k8S4W2g6_83108O7/8s7?7T8T0j0F1n0P000G0I122r8Z2r2H0i2b7q9i6A8-2h8Z056a607j0*0j0)0j61693*048w6O6t0w6:6=6Q0j0p4l2V590.7V7q6;0P6?6*6*1z0G9f7 8(9001928Q7h9v8|4(8~8M788=7-9388619-046+7q9d9!9r8;8q8@8s7j9`8U996`9c9e0A9g9L1n0r9k0C9m1n9o0b9q479t8`9w5{9z629t9E1T1O04a80T0p8L3C0G0W0_2U3)4g0k7`7z8*0K0.1x4j1?0q8$1?2R6{2^8-0A7q198,aW1?9Y9 0E0j0x0f0b1z000Q7W0j6J8!a_0f9Zac9#4e7t0b2)0A2W1wad2}0g0.8paC6_a@617V2L5a7p9e2r0A6_190J7`0~1Wb79#7A8Ca)7#7%810b7V7}7`7 7(1Bbh7Y758h0@8kaGaw3m203:172b0p0l3$bU29bU2cb30i1=107/0y0Y3C1%0k0v7~7d0W0H150S0=aB6g0CbRb$0yb(0pb*6$b,b.0Lb:b=6^b^040s3Cbd9$a18?9@7g0k9`b}b 6|c1b)11c5b-1}c9bFb?cc1vb3a)8)8+0ha!7q9/9%9)8^7h953W2$b~b#cqc2c40Mc6cwb;cycb150Ua}9 8(aY8,8.1ncJci9?9*9_963wco172$b!b}bWbY1/6m1I2+bU2-b%csb+cvb/cZ9gc#606gc 6hcTd7cuc7cxdcb@2v8n919=8r9^9,c@2!dfbRd5crc3ctcWd9c8db7 ddcKdsa3887ScP6hdzdidCd8dldHczdp5Zdra2ck9+cO5:2$c c{bRc|dhd6dTdkcYcado043ud*dRd:cVcXdad@ccdKd#c=a5dw3#d|dBd~dFdmdId^e3cj9*d(6NdQd4dSebdVe1dY6vd!ehcM7icnd{c`2)d-e9cUdDd dGeq3Edyemd}eEecdWdJc:dt8_8ae7eJ1/dAeDdUd?c!efeQdM7geTdPdgeXdjdEepe#e2e%d$8teUey6j3m6l25d22$6p1=8y6H1d9Y6Ya|000@0j0k8Xb30j2g0_0k0.brambncD0W0.b.0b6^0j6!a*0f7.8p0e2D0j0.b{1?bi6_9~bm7z8B738DbM8jacaG0j0q1z7Z8YfB0L3C0ja@egc;ev9`0jb50Aa-0TbKa=fa0b000l0L7t0K0fa|a~adaXaOc,a#c.1d9:7LdLe@ej3lc*00fC0laB0j0cbQc`6T17gjay8A0j0g1m2Wg1ao9C6}5%7B749B3^9Lfefo6?aGbt8Ugn051w046;bL0j0I0}5r0NgKgB8Z7.7d2}8Z0PaFa;1Aa91d0L1aad9s9C4$9tgUcq8pb62D9#b9bbacbjbf0Oa71n2U0k0h7s1?aEfQg-3^g/9Cghay0B2h0_1=0_8K2)6KgMfRh93:hbgAb3g?7dg^8Z2L2N120g0E9Rh12rh4aca{gxfM6Z0k7HgNhp4#gz3:7u7wg1fi0_a@6{gvby0`bx75f`a+a 8Z769thrhScJapauhc8x6t0r0Gbjf#eRd%dO7o7q9oh,gq6Lh^ayh}e(0q090I0pf@0k0-dl0D0!0j0609b+0-h!5(fL1B0!h a-1p1r0H0#4M9w0$0jinc5ip5$4hhJitd%a-0909il1o1q1siA0jiC0j0O0jiDiFcWiH4gir7CiL7iiN094LixiTiBiZiXi?0ui?i#0yi%gwh%iu0ni-i/iSiziVi?iYiDi_iD8ti.iRiy0#7iim2r0Kihcwijexax0Ngl0N6Qe|0:800^04.
Question 2 : nombres de harshad
Vous devez écrire une fonction harshad(n) prenant en paramètre un nombre entier positif n et renvoyant True si n est un nombre harshad et False sinon.
Vous devez utiliser la fonction somme_chiffres. Même si vous n'avez pas réussi à traiter la question précédente, vous pouvez utiliser cette fonction qui est chargée automatiquement pour cette question.
Tester si un nombre est divisible par un autre
On rappelle qu'un nombre \(a\) est divisible par \(b\) si le reste de la division euclidienne de \(a\) par \(b\) est 0.
Exemples
🐍 Console Python >>> harshad ( 18 )
True
>>> harshad ( 72 )
True
>>> harshad ( 11 )
False
.128013s3o_;bcdufvg/0lyàq napS.r1Lmeh,(P2=:twk%iR)é050i0D0L0v0P0p0b0t0h0p0v0b0b0J010L0P0w010406050b0j0C0C0v0z0q040x0d0p0j0-0d0u0t020v0C0w0f0t0Q0D0`0z0s0j0D0b050n0@0_0{0}0=0w041l1s051v0n1v1x1s0=0i0P0l0#0%0)0+0E0P0m0E0p1L0E0L0:050W0g0p0D1G0(0*011K1M1O1M0L1U1W1S0L0g0d0i0}1T0z1t0L0E0#100b0w0v0u0+0I011Y1I010k0Y0D0u180D1S1}1 241!271W2a0C2c040a0t0H0z0d0w0d0b0P13150U1{0z0z0D0h2x1l2e0u1t0n1_2J0L1@1?1^0i2g0+1O0u292u1S1D1F0$1Z2T0P2V0u1:1E1S0w2C1t2H2J2;0?1~152#252*0z0`0p0:0A2G2^0;2@2f2`1!2|2~0:0I321 2J2.0D2J2Z2M0i2Q2S010h1:2m0T1E1t3g2:333d2I053p0U3w361H1!0N0:0U0k3y3D2_3F0+0M0:0t3L353N2$010u0k0:0E0{0b3#0i3T2H3n0/040G3*2^3n0u0:0u3:3E3W3-0R0K3L060t413S3+370+3H042C0L0j0z3^1m33433;453X3@3L4g3`250d0:0O4l3U3=0:0b0d0_0D0e0h1K0k0k2C1k4e3e4t4i3-3/4H3z443O4j044d2?4P3{0:0R4s4V4o0:0J0J4Z4h4Q0C0P0:0o3 1l3B3h1u2/1l3j1l0L3l4{2O2K1/1;2M0v1V4?0n3j1r3M3n2C0C0e0k0v0N4z0E0c0:1d1f1h1j0t3~4N3f341s0B0v0t0k142E0P143S4=043#0z3%0v3)0n5F0t1j0L0t2v191W5q0t5D0b1X3p0u0L295$0t2z5$0b5$0z5R0P0t5U4F5(2z0%5)1E0P2v5D2z3A3q4S4;610t1~5.603C4w4y4A4C4E1j0G0u4Y5M645P0t0S0m0v0p0t0r5E614/6j3C0y0t0x5:0d0j0P0F5;1X2*0C0g2C5O5,3S1e5G3$3(1l6P6F2v0t2*150Y6X1X0p006l1~0b0y1u34570V0X0Z04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)