Page 1 sur 2

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

Posté : 11 janv. 2007, 14:02
par abricot
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! >_<

Posté : 11 janv. 2007, 14:05
par Ultim4T0m
Cherche du côté du modulo ( % ) tu devrais pouvoir réussir à faire ce que tu veux ;)

Posté : 11 janv. 2007, 14:15
par jojolapine

Posté : 11 janv. 2007, 14:22
par abricot
$a % $b (Modulo) (Reste de $a divisé par $b. )

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

Posté : 11 janv. 2007, 14:29
par Maitrepylos
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
{



Posté : 11 janv. 2007, 14:29
par jojolapine
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

Posté : 11 janv. 2007, 14:36
par abricot
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?

Posté : 11 janv. 2007, 14:41
par abricot
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?

Posté : 11 janv. 2007, 14:42
par sadeq
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";
}

Posté : 11 janv. 2007, 14:45
par iclo
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:

Posté : 11 janv. 2007, 14:52
par Maitrepylos
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

Posté : 11 janv. 2007, 14:53
par abricot
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]

Posté : 11 janv. 2007, 14:56
par jojolapine
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 :-(

Posté : 11 janv. 2007, 15:17
par abricot
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!

Posté : 11 janv. 2007, 15:23
par jojolapine
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