Puissances d'un nombre

On s'intéresse dans cette page à deux problèmes traitant du calcul des puissances d'un nombre strictement positif.

On rappelle que si \(a\) est un nombre réel strictement positif et \(n\) un entier naturel, alors on a :

\[ a^n =\begin{cases} 1&\text{ si }n=0\\ a\times \dots \times a \text{ avec }n\text{ facteurs}&\text{ sinon} \end{cases} \]

Par exemple :

\[3^4=3\times3\times3\times3=81\]
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.

Puissances croissantes

Soient \(a\) et \(b\) deux entiers strictement positifs. \(a\) est différent de \(1\).

Si \(a\) est strictement supérieur à \(1\), les puissances de \(a\) successives sont croissantes.

Considérons par exemple les puissances de \(2\) : Puissances de \(2\)

  • \(2^0=1\)

  • \(2^1=2\)

  • \(2^2=4\)

  • \(2^3=8\)

  • ...

  • \(2^{8}=256\)

On peut démontrer que, quelle que soit la valeur de \(b\) positif, il existe une certaine puissance de \(a\) supérieure ou égale à \(b\).

Par exemple, en prenant \(a=2\) et \(b = 999\), il faut attendre \(a^{10}=1~024\) pour dépasser \(b\).

On demande d'écrire la fonction puissance_superieure qui :

  • prend en paramètres les entiers a et b ;

  • renvoie la première valeur de l'entier n telle que a puissance n est supérieure ou égale à b.

Exemples
>>> puissance_superieure(2, 1)  # on a 2^0 = 1
0
>>> puissance_superieure(2, 8)  # on a 2^3 = 8
3
>>> puissance_superieure(5, 130)  # on a 5^3 = 125 et 5^4 = 625
4

###(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

.1280132mhS)cleP=3tfnp_:avgby;s560or 1(k+*4iwu7d,/050P0i0m0s0L0h0y0E0g0h0s0y0y0k010m0L0p010406050y0N0c0c0s0D0w040e0C0h0N0,0C0o050R0?0^0`0|0;0p04051c151f0R1c0;0P0L0t0!0$0(0*0d0L0u0d0h1t0d0m0/050V0v0h0i1o0%0)011s1u1w1u0m1C1E1A0m0D1d0m0d0!0 0y0p0s0o0*0b011G1q010n0X0i0o0s0c0i1A1Z1#1*1I1-1E1:1=0/0a0E0j0D0C0p0C0y0L120o0E0T1X0D0D0i0g2a151^0o1d0R1V2n1S1U1T1B0P1`0*1w0o1/271A1l1n0#1H2x0L2z0o0C2D1A0p2g1d2l2n2R0=1!2b2F1+2K0D0_0h0/0F2k2V0:2U1_2X1I2Z2#0/0b2)1#2+2l2w012:0s2$040l2@2m0;2`2.0*2}2 0K322_2V2{380/0z3b343d362|0C2!2~0/0A3i2,2W1p2/3n2;040O3b1g2P152D2q0P1U2v3l0g2L1?1d3F1e3D2T162*053L0T2Q3k3v0*0H0/0T0n3B353!010M0/0E3*3Z2G2|0n0/0p0N0L0(1#0g0i0q0?0p0i0D0L0i0N2g3;2-3,0.040G4a3u3?0o0/0s4g2{4d0Q3b3:3+4i0/0v4m3l4d0f0r3i0E4C4r3=2Y3_3{3}0o3 4q3t2{0C0/0k4M4s1+0c0L2%4B4D4N3l4j04143T2^4E4b3?4P044R4)2m4+4h4U4W040B4Y4C4!3,3$040M1s1E4S4F2/4H3|0y3~0i554,1+4.020h0m0x5d4@57044v4;3Y5e1I4d4A5q064D5y4?3e584J4L5q5A3l4.4:2R5G3,4$3`595b5l4O0/0J5R4#4k4|5z4~4t4%5V3,5I5%5#4(5K5!5f0/0I5*4^4X5w5y5.1I502g0m485,2*5L5+3s0R3W0i2n2O673E1m3G2q2t2o0s1D6a0R3F0;6k0U0W0Y04.

###(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

.1280132mhS)cleP=3tfnp_:avgby;s560or 1(k+*4iwu7d,/050P0i0m0s0L0h0y0E0g0h0s0y0y0k010m0L0p010406050y0N0c0c0s0D0w040e0C0h0N0,0C0o050R0?0^0`0|0;0p04051c151f0R1c0;0P0L0t0!0$0(0*0d0L0u0d0h1t0d0m0/050V0v0h0i1o0%0)011s1u1w1u0m1C1E1A0m0D1d0m0d0!0 0y0p0s0o0*0b011G1q010n0X0i0o0s0c0i1A1Z1#1*1I1-1E1:1=0/0a0E0j0D0C0p0C0y0L120o0E0T1X0D0D0i0g2a151^0o1d0R1V2n1S1U1T1B0P1`0*1w0o1/271A1l1n0#1H2x0L2z0o0C2D1A0p2g1d2l2n2R0=1!2b2F1+2K0D0_0h0/0F2k2V0:2U1_2X1I2Z2#0/0b2)1#2+2l2w012:0s2$040l2@2m0;2`2.0*2}2 0K322_2V2{380/0z3b343d362|0C2!2~0/0A3i2,2W1p2/3n2;040O3b1g2P152D2q0P1U2v3l0g2L1?1d3F1e3D2T162*053L0T2Q3k3v0*0H0/0T0n3B353!010M0/0E3*3Z2G2|0n0/0p0N0L0(1#0g0i0q0?0p0i0D0L0i0N2g3;2-3,0.040G4a3u3?0o0/0s4g2{4d0Q3b3:3+4i0/0v4m3l4d0f0r3i0E4C4r3=2Y3_3{3}0o3 4q3t2{0C0/0k4M4s1+0c0L2%4B4D4N3l4j04143T2^4E4b3?4P044R4)2m4+4h4U4W040B4Y4C4!3,3$040M1s1E4S4F2/4H3|0y3~0i554,1+4.020h0m0x5d4@57044v4;3Y5e1I4d4A5q064D5y4?3e584J4L5q5A3l4.4:2R5G3,4$3`595b5l4O0/0J5R4#4k4|5z4~4t4%5V3,5I5%5#4(5K5!5f0/0I5*4^4X5w5y5.1I502g0m485,2*5L5+3s0R3W0i2n2O673E1m3G2q2t2o0s1D6a0R3F0;6k0U0W0Y04.
Puissances décroissantes

Soient \(a\) et \(b\) deux entiers strictement positifs. \(a\) est différent de \(1\).

Si \(a\) est strictement inférieur à \(1\), les puissances de \(a\) successives sont décroissantes.

Considérons par exemple les puissances de \(\dfrac12\) : Puissances de \(2\)

  • \(\left(\dfrac12\right)^0=1\)

  • \(\left(\dfrac12\right)^1=\dfrac{1}{2}=0,5\)

  • \(\left(\dfrac12\right)^2=\dfrac{1}{4}=0,25\)

  • \(\left(\dfrac12\right)^3=\dfrac{1}{8}=0,125\)

  • ...

  • \(\left(\dfrac12\right)^{8}=\dfrac{1}{256}=0,00390625\)

On peut démontrer que, quelle que soit la valeur de \(b\) positif, il existe une certaine puissance de \(a\) inférieure ou égale à \(b\).

Par exemple, en prenant \(a=\dfrac{1}{10}\) et \(b = 0,0002\), il faut attendre \(a^{4}=0,0001\) pour être inférieur ou égal à \(b\).

On demande d'écrire la fonction puissance_inferieure qui :

  • prend en paramètres les entiers a et b ;

  • renvoie la première valeur de l'entier n telle que a puissance n est inférieure ou égale à b.

Exemples
>>> puissance_inferieure(1/2, 1)  # (1/2)^0 = 1
0
>>> puissance_inferieure(1/2, 1/8)  # (1/2)^3 = 1/8
3
>>> puissance_inferieure(1/10, 0.0002)  # (1/10)^3 = 0,001 et (1/10)^4 = 0,0001
4

###(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

.1280132mhS)cleP=3tfnp_:avgby;s560or 1(k+*4iwu7d,/050P0i0m0s0L0h0y0E0g0h0s0y0y0k010m0L0p010406050y0N0c0c0s0D0w040e0C0h0N0,0C0o050R0?0^0`0|0;0p04051c151f0R1c0;0P0L0t0!0$0(0*0d0L0u0d0h1t0d0m0/050V0v0h0i1o0%0)011s1u1w1u0m1C1E1A0m0D1d0m0d0!0 0y0p0s0o0*0b011G1q010n0X0i0o0s0c0i1A1Z1#1*1I1-1E1:1=0/0a0E0j0D0C0p0C0y0L120o0E0T1X0D0D0i0g2a151^0o1d0R1V2n1S1U1T1B0P1`0*1w0o1/271A1l1n0#1H2x0L2z0o0C2D1A0p2g1d2l2n2R0=1!2b2F1+2K0D0_0h0/0F2k2V0:2U1_2X1I2Z2#0/0b2)1#2+2l2w012:0s2$040l2@2m0;2`2.0*2}2 0K322_2V2{380/0z3b343d362|0C2!2~0/0A3i2,2W1p2/3n2;040O3b1g2P152D2q0P1U2v3l0g2L1?1d3F1e3D2T162*053L0T2Q3k3v0*0H0/0T0n3B353!010M0/0E3*3Z2G2|0n0/0p0N0L0(1#0g0i0q2I0n0i0D0L0i0N2g3;2-3,0.040G4a3u3?0o0/0s4g2{4d0Q3b3:3+4i0/0v4m3l4d0f0r3i0E4C4r3=2Y3_3{3}0o3 4q3t2{0C0/0k4M4s1+0c0L2%4B4D4N3l4j04143T2^4E4b3?4P044R4)2m4+4h4U4W040B4Y4C4!3,3$040M1s1E4S4F2/4H3|0y3~0i554,1+4.020u0m0x5d4@57044v4;3Y5e1I4d4A5q064D5y4?3e584J4L5q5A3l4.4:2R5G3,4$3`595b5l4O0/0J5R4#4k4|5z4~4t4%5V3,5I5%5#4(5K5!5f0/0I5*4^4X5w5y5.1I502g0m485,2*5L5+3s0R3W0i2n2O673E1m3G2q2t2o0s1D6a0R3F0;6k0U0W0Y04.