Comment déterminer si un nombre donné est pair ou impair? Je voulais comprendre cela depuis longtemps maintenant et je ne suis allé nulle part.
129
Vous pouvez utiliser l'opérateur de module, mais cela peut être lent. Si c'est un entier, vous pouvez faire:
if ( (x & 1) == 0 ) { even... } else { odd... }
Ceci est dû au fait que le bit faible sera toujours défini sur un nombre impair.
n % 2 == 0
signifie sémantiquementDivide by 2 and check if the remainder is 0
, ce qui est beaucoup plus clair quen & 1 == 0
ce que signifieZero all the bits but leave the least significant bit unchanged and check if the result is 0
. L'amélioration de la clarté du premier vaut la surcharge (probablement inexistante). C'est ce que je voulais dire par optimisation prématurée. Si quelque chose est lent et que vous le profilez dans cette partie, le changementn % 2
enn & 1
est certainement justifié, mais le faire à l'avance ne l'est pas. En général, travailler avec les opérateurs de bits est une mauvaise idée avant le profilage.n % 2 == 0
est plus propre quen & 1 == 0
.la source
Si le reste lorsque vous divisez par 2 est égal à 0, il est pair.
%
est l'opérateur pour obtenir un reste.la source
(A % B)
lui-même peut être utilisé comme une expression, et c'est là que les choses deviennent amusantes.L'opérateur de reste,%, vous donnera le reste après avoir divisé par un nombre.
Il en
n % 2 == 0
sera de même si n est pair et faux si n est impair.la source
Chaque nombre pair est divisible par deux, qu'il s'agisse d'un nombre décimal (mais le nombre décimal, s'il est présent, doit également être pair). Vous pouvez donc utiliser l'
%
opérateur (modulo), qui divise le nombre à gauche par le nombre à droite et renvoie le reste ...la source
je recommanderais
Il y a une brève explication comment vérifier si le nombre est impair. Le premier essai est quelque chose de similaire à ce que @AseemYadav a essayé:
mais comme cela a été mentionné dans le livre:
donc généralement, lorsque nous avons un nombre impair négatif,
1
nous obtiendrons-1
au lieu de celai%2
. Nous pouvons donc utiliser la solution @Camilo ou simplement faire:mais généralement la solution la plus rapide utilise l'opérateur AND comme @lucasmo écrire ci-dessus:
@Edit Il vaut également la peine de souligner
Math.floorMod(int x, int y);
ce qui traite bien le dividende négatif mais peut également revenir-1
si le diviseur est négatifla source
Fonctionne pour les nombres positifs ou négatifs
la source
Le bit le moins significatif (le plus à droite) peut être utilisé pour vérifier si le nombre est pair ou impair. Pour tous les nombres impairs, le bit le plus à droite est toujours 1 dans la représentation binaire.
la source
Ce programme suivant peut gérer de grands nombres (nombre de chiffres supérieur à 20)
Voici la sortie:
la source
Vous pouvez utiliser l'opérateur de module, mais cela peut être lent. Un moyen plus efficace serait de vérifier le bit le plus bas car cela détermine si un nombre est pair ou impair. Le code ressemblerait à ceci:
la source
Vous pouvez faire comme ceci:
En effet, Java a dans son fonctionnement modulo le signe du dividende, le côté gauche: n. Donc, pour les dividendes négatifs et positifs, le modulo en a le signe.
Bien sûr, l'opération au niveau du bit est plus rapide et optimisée, il suffit de documenter la ligne de code avec deux ou trois mots courts, ce qui le fait pour la lisibilité.
la source
Un autre moyen facile de le faire sans utiliser la condition if / else (fonctionne pour les nombres positifs et négatifs):
Pour un nombre impair, l'expression renverra '1' comme reste, donnant
sinon, 'even' est affiché lorsque l'expression donne le résultat '0'
la source
int n = -3;
. Comme @Camilo mentionné ci-dessous - lorsque l'opération de reste retourne un résultat différent de zéro, elle a le même signe que son opérande de gauche si généreusement nous avonsSystem.out.println(messages.get(-1));
ce qui nous donnejava.lang.ArrayIndexOutOfBoundsException
Si le module du nombre donné est égal à zéro, le nombre est pair ou impair. Voici la méthode qui fait cela:
la source
la source
Voici un exemple pour déterminer si un nombre donné est pair ou impair,
Eh bien, il existe de nombreuses façons de déterminer la même chose. Référez - vous à cette ressource pour plus d'exemples pour trouver que le nombre donné est pair ou impair.
la source
Voici un exemple complet: -
la source