1
votes

Trouver le plus grand multiple de n inférieur à x

Quelle serait la manière la plus pythonique de trouver le plus grand nombre multiple de n mais inférieur à un x supérieur?

Exemple pratique:

< pre> XXX

48 * 54 = 2592 est le plus proche.

Je ferais une boucle for jusqu'à ce que je ne le fasse pas ' t aller plus de x . Quelles sont les meilleures alternatives?


1 commentaires

n * floor (x / n) , avec votre exemple x / n = 54,91, donc le multiple est 48 * 54


4 Réponses :


10
votes

Le moyen le plus simple consiste probablement à utiliser //:

((x - 1) // n) * n

Si le nombre doit être strictement inférieur à x , utilisez x - 1 à la place:

(x // n) * n

L'expression x // n est la division par étage de x code> par n , en supprimant tout reste.


2 commentaires

C'est la seule réponse qui prend en compte l'exigence (strictement) "inférieure à".


@RoryDaulton. Mais l'exigence peut être extrapolée aux autres de manière assez triviale.



8
votes

Vous pouvez utiliser l'opération modulo

x - 1 -((x-1) % n)

Si la limite supérieure doit être strictement inférieure à x, utilisez

x-(x%n)


1 commentaires

Je suis sûr que l'opération s'appelle modulo, pas module: en.wikipedia.org/wiki/Modulo_operation, docs.python.org/3 / reference /… (+1 BTW).



2
votes

Cela fonctionne aussi:

print(x - (x%n))


0 commentaires

1
votes

La manière la plus pythonique à laquelle je pourrais penser serait pour python 2 ou 3:

>>> (x // n) * n


0 commentaires