Comment dire : if (x n'est pas un multiple de 5?)

Eléphant du PHP | 65 Messages

11 janv. 2007, 14:02

Bonjour tout le monde!!!,

C'est encore moi! :shock:
Je l'envahie ce forum lol! Cette fois je voudrais savoir comment dire :
(X etant un nombre)

Si (X n'est pas un multiple de 5)

Desolé de vous souler, j'ai cherché mais je trouve pas! >_<

Eléphant du PHP | 445 Messages

11 janv. 2007, 14:05

Cherche du côté du modulo ( % ) tu devrais pouvoir réussir à faire ce que tu veux ;)
LLDC
Ulti

ViPHP
ViPHP | 3607 Messages

11 janv. 2007, 14:15


Eléphant du PHP | 65 Messages

11 janv. 2007, 14:22

$a % $b (Modulo) (Reste de $a divisé par $b. )

euh, j'ai du mal à comprendre :shock:

Mammouth du PHP | 1029 Messages

11 janv. 2007, 14:29

Le modulo, renvoie le restant de la division :

Soit : 0 si il est divisible
Soit : 1 si il n'est pas divisible


donc quelque chose dans le genre
if(($X%5)==0)
{
  vrai
{


L'expérience est la somme de toutes nos erreurs.

ViPHP
ViPHP | 3607 Messages

11 janv. 2007, 14:29

et bien j'explique un petit peu, te rappels-tu des leçons de maths du collège/lycée (chai plus) où l'on disait pour
pour n € N,
n | q <=> n = k * q
avec k € N
traduction:
si n est divisible par q (ou n est multiple de q) alors le reste de la division de n par q est égal à 0
Tu vois où je veux en venir ?

edit: rooo ça m'apprendra à vouloir être pédagogue... me suis fait doubler

Eléphant du PHP | 65 Messages

11 janv. 2007, 14:36

Salut :shock:
Merci pour vos réponses mais c'est assez difficile car je n'ai jamais étudié à l'école, c'est pas que je suis bête mais j'avais pas envie :/

Ce que j'ai compris c'est que Si à force de diviser X par 5 on arrive pas à 0 alors X est faux, si non X est vrai, c'est juste?

Eléphant du PHP | 65 Messages

11 janv. 2007, 14:41

ah non c'est pas ca en fait je crois que j'ai compris!

par exemple si x = 5 et que je divise x par 5 j'aurais come resultat 1 sois un nombre entier! donc vrai
par contre si je prend x = 6 et que je le divise par 5 j'aurais un nombre decimal, donc faux

mais les deux sont divisble!

c'est ca? ou j'ai encore faux?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

11 janv. 2007, 14:42

Voici un petit cours en math:

La division entière de x par 5:
s"écrit : q = x/5 (où q est le résultat entier de cette division)
Le reste de cette division est : x - (5*q)
Ce reste est appelé le "Modulo" de x par 5 et s'écrit : x % 5 et se lit : "x modulo 5"

Exemples:
  • 5 % 5 = 0 (reste 0 => 5 est mutliple de 5)
    10 % 5 = 0 (reste 0 => 10 est mutliple de 5)
    6 % 5 = 1 (reste 1 => 6 n'est pas mutliple de 5)
    8 % 5 = 3 (reste 3 => 8 n'est pas mutliple de 5)
Il y a donc deux cas de restes possibles à étudier pour savoir si x est multiple de 5:
  • Si le reste de x/5 est nul alors x est multiple de 5
    Si le reste de x/5 n'est pas nul alors x n'est pas multiple de 5
En programmation, pour savoir si x est mltiple ou non de 5, il suffit donc de vérifier si le reste est nul ou non:

En PHP, celà s'écrit:
if ($x % 5 == 0) {
     echo "$x est multiple de 5";
} 
else {
    echo "$x n'est pas multiple de 5";
}
ou l'inverse
if ($x % 5 != 0) {
     echo "$x n'est pas multiple de 5";
} 
else {
    echo "$x est multiple de 5";
}
Modifié en dernier par sadeq le 11 janv. 2007, 14:50, modifié 2 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

ViPHP
ViPHP | 2144 Messages

11 janv. 2007, 14:45

bof pas vraiement ça:

un exemple, avec une division entière (sans virgule)

7 divisé par 2, ça donne 3 et un reste de 1
9 divisé par 2, ça donne 4 et un reste de 1
13 divisé par 5, ça donne 2 et un reste de 3.

L'opérateur % te permet d'obtenir le reste.

Si un nombre est divisible par un autre, le reste doit valoir 0
6 divisé par 2, ça donne 3 et un reste de 0
9 divisé par 3, ça donne 3 et un reste de 0

Donc si il n'est pas divisible, le reste est >0.
A partir de là, c'est un jeu d'enfance d'obtenir ce que tu souhaites.

[EDIT] Grillé par sadeq, mais bon, deux explications pour le prix d'une, c'est jamais mauvais à prendre :lol:

Mammouth du PHP | 1029 Messages

11 janv. 2007, 14:52

ah non c'est pas ca en fait je crois que j'ai compris!

par exemple si x = 5 et que je divise x par 5 j'aurais come resultat 1 sois un nombre entier! donc vrai
par contre si je prend x = 6 et que je le divise par 5 j'aurais un nombre decimal, donc faux

mais les deux sont divisble!

c'est ca? ou j'ai encore faux?

Ben disons que dans ce cas les deux seront faux puisque il retourne quelque choses.

L'avantage avec le modulo comme l'explique Iclo et sadeq, c'est que si le reste de la division est 0, c'est que c'est vrai
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 65 Messages

11 janv. 2007, 14:53

Ahhhhhhhh donc par exemple

x = 10
q = x/5 soit (q = 10/5)
q=2
x - (5*q) soit 10 - (5*2) = 0

je vais prendre un autre exemple pour voir si j'ai bien compris

x = 90
q = x/5 soit (q = 90/5)
q = 18
x - (5*q) soit 90 - (5*18) = 0

C'est tout bete!! J'ai tout compris, merci sadeq![/u][/i]

ViPHP
ViPHP | 3607 Messages

11 janv. 2007, 14:56

bon alors je vais essayer d'être plus clair!
On va prendre des exemples
disons qu'on essaye de diviser 10 par 5, le résultat est 2.
ça c'est facile.
maintenant on peut écrire ça comme ça:
10 = 5 x 2
pas trop dur...
maintenant on va essayer de diviser 13 par 5, le résultat est 1,6
pas trop dur, avec une calculette, ça se fait tout seul avec une calculette :langue:
maintenant, on va essayer de l'écrire comme la seconde écriture de 10/5
ça donne:
13 = 5 x 2 + 3
et on se rend compte que on peut écrire pour la première division:
10 = 5 x 2 + 0
ça ne sert à rien en soit, mais c'est pour montrer, que pour tout nombre X (entier -sans virgule-), on peut écrire:
X = q x d + r
où r est le reste de la division euclidienne de X par d

Donc maintenant revenons à nos moutons:
on sait que pour un chiffre X donné, si X est divisible par d, alors le reste de la division euclidienne de X par d est égal à 0

Voilà pour la théorie, maintenant pour appliquer à php, pour obtenir le reste de la division euclidienne, on utilise l'opérateur %
ainsi
echo 10%5; // affiche 0
echo 13%5; // affiche 3
voilà si tu as d'autres questions n'hésite pas ;-)

EDIT: tripled grilled :-(

Eléphant du PHP | 65 Messages

11 janv. 2007, 15:17

lol jojolapine!

Oui j'ai une autre question!

Donc si
x = 13
x = 2*5 + 3

on est d'accord?

Mais on pourrais aussi ecrire
x = 13
x = 2,6*5 + 0

donc ca en reviens à ce que je disais au debut, si le resultat de la division de X par 5 est decimal elle est consideré comme fausse mais pourtant elle est valide!

ViPHP
ViPHP | 3607 Messages

11 janv. 2007, 15:23

lorsque l'on parle de multiples, on parle de divisions entières, c'est à dire dont les composants n'ont pas de virgules, c'est ce qu'entend une division euclidienne, en effet dans cette écriture:
x=d*q+r
x,d,q et r sont tous des entiers, donc on ne peu pas avoir le cas de figure dont tu viens de parler