PHPerKaigi 2025

bcpowmod

(PHP 5, PHP 7, PHP 8)

bcpowmodCalcule le reste modulo d'un nombre élevé à une puissance

Description

bcpowmod(
    string $num,
    string $exponent,
    string $modulus,
    ?int $scale = null
): string

Utilise la méthode d'exponentiation rapide pour élever le nombre num à la puissance exponent, et en calculant le reste modulo modulus.

Liste de paramètres

num

La base, sous la forme d'une chaîne de caractères (c'est-à-dire que l'échelle doit être nulle).

exponent

L'exposant, sous la forme d'une chaîne de caractères non négarive (c'est-à-dire que l'échelle doit être nulle).

modulus

Le modulo, sous la forme d'une chaîne de caractères (c'est-à-dire que l'échelle doit être nulle).

scale
Ce paramètre est utilisé pour définir le nombre de chiffres après la virgule dans le résultat. Si null, il prendra par défaut la valeur définie par bcscale(), ou, à défaut, la valeur de la directive INI bcmath.scale.

Valeurs de retour

Retourne le résultat, sous la forme d'une chaîne de caractères.

Erreurs / Exceptions

Cette fonction lève une exception ValueError dans les cas suivants :

  • num, exponent ou modulus n'est pas une chaîne numérique BCMath correctement formée
  • num, exponent ou modulus possède une partie fractionnaire
  • exponent est une valeur négative
  • scale est en dehors de la plage valide

Cette fonction lève une exception DivisionByZeroError si modulus est égal à 0.

Historique

Version Description
8.0.0 scale est désormais nullable.
8.0.0 Lève désormais une exception ValueError au lieu de retourner false si exponent est une valeur négative.
8.0.0 La division par 0 lève désormais une exception DivisionByZeroError au lieu de retourner false.

Exemples

Les deux lignes suivantes produisent le même résultat. La version qui utilise bcpowmod() est bien plus rapide, et accepte des paramètres plus grands.

<?php
$a
= bcpowmod($x, $y, $mod);

$b = bcmod(bcpow($x, $y), $mod);

// $a et $b sont égaux.

?>

Notes

Note:

Comme cette méthode utilise les opérations de modulo, les nombres non positifs risquent de donner des résultats inattendus.

Voir aussi

  • bcpow() - Élève un nombre à une puissance donnée
  • bcmod() - Retourne le reste d'une division entre nombres de grande taille
  • BcMath\Number::powmod() - Elève une nombre de précision arbitraire, réduit par un modulo spécifié

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top