Je voudrais un alogrithm qui utiliserait seulement des opérations de décalage, ajouter ou soustraire pour trouver si un nombre est un multiple de 6. Donc, fondamentalement juste des opérations binaires. Jusqu'ici, je pense que je devrais logiquement déplacer le nombre deux fois pour diviser par 4 et ensuite soustraire 6 une fois. Mais je sais que quelque chose ne va pas avec mon approche et je n'arrive pas à comprendre quoi.Comment vérifier si un nombre est un multiple de 6?
Répondre
diriez-vous de garder en soustrayant le nombre de 6 jusqu'à ce que il atteint zéro. Si vous obtenez zéro le nombre est divisible par 6 sinon, non. OU continuez à diviser le nombre par 2 (opération de décalage sur binaire) jusqu'à ce que le nombre soit inférieur à 12. puis soustrayez 6 de ce nombre. Si inférieur à zéro (non divisible) si zéro divisible. si elle n'est pas soustraite 3 Si inférieur à zéro (non divisible) si zéro divisible.
Reference: http://wiki.answers.com/Q/How_can_you_tell_if_a_number_is_a_multiple_of_6
It is a multiple of six if BOTH of the following statements are true:
1) The last digit (ones place) is 0, 2, 4, 6, or 8.
2) When you add all the digits together, you get a multiple of 3.
Reference: http://wiki.answers.com/Q/How_can_you_tell_if_a_number_is_a_multiple_of_3
1) Start with a number N.
2) Sum the digits of the number, and get M.
3) If M is larger than 10, set N=M and return to stage 2.
4) Otherwise, M is now smaller than 10. If M is 0,3,6 or 9, then N is a multiple of 3
Maintenant, expliquez, comment allez-vous ajouter tous les chiffres sans utiliser la division? – st0le
Référence: http://wiki.answers.com/Q/How_can_you_tell_if_a_number_is_a_multiple_of_6 – Java42
Mec, comment voulez-vous additionner tous les chiffres sans utiliser mod ou div ou en le convertissant en chaîne? – st0le
Vous pourriez essayer d'implémenter un algorithme de division avec les opérations primitives disponibles. L'algorithme long division de base de la 4e année pourrait être assez (juste faire les choses dans la base 2 au lieu de la base 10, au lieu de la multiplication opérateurs de bits)
1) Simple (N & 1) == 0
pour vérifier si le nombre est divisible par 2.
2) Utilisez la réponse Bit bidouille (du fil This.) pour vérifier la divisibilité par 3.
Si les deux sont vrais, votre nombre est divisible par 6.
OK. Voici comment je vais y aller (juste une première pensée):
Un multiple de 6 est à la fois un multiple de 2 et 3, il devrait donc satisfaire les critères de divisibilité de 2 et 3 en même temps ... Alors ...
Vérifiez divisibilité par 2:
- décalage vers la droite le nombre
- Si reste> 1, répéter 1.
Si reste = 1, alors FALSE, sinon continuez.
La vérification de la divisibilité par 2, pourrait évidemment être également mise en œuvre par (N & 1 == 0), comme indiqué ci-dessus. Cela permet de vérifier simplement le dernier chiffre de la représentation binaire de N: si elle est 1, N est impair (donc pas divisible par 2), si elle est 0, il est parfaitement divisible ...
- Vérifier divisibilité par 3 :
- Soustraire 3.
- Si reste> 3, répéter 1.
- Si reste> 0, FALSE, sinon TRUE.
Si nous étendons la gamme des opérations à "bit-masquage" et "bit-shifting", il est simple.
Comme certains l'ont dit, la divisibilité par deux est équivalente à (n & 1) == 0
. La divisibilité par 3 est (relativement) facile en binaire. Initialiser un accumulateur a
à 0, puis répéter a += (n & 3); n = (n >> 2);
jusqu'à ce que n soit 0. Si (et seulement si) a est 3 est n divisible par 3.
- 1. Java, Vérifier si le nombre entier est multiple d'un nombre
- 2. vérifier si un nombre est un nombre complexe en javascript
- 3. Comment puis-je savoir si un nombre est un multiple d'un autre nombre?
- 4. Comment vérifier si un élément d'une liste est un nombre?
- 5. Comment vérifier si un paramètre JavaScript est un nombre?
- 6. Essayer de vérifier si un nombre est supérieur à un
- 7. Comment calculer si un nombre est un multiple d'un autre nombre (bien en quelque sorte)
- 8. Comment vérifier si un nombre est évalué à l'infini?
- 9. Comment vérifier si un nombre est dans la plage donnée?
- 10. Comment vérifier si * nombre * est dans un tableau
- 11. Vérifier si la variable est un nombre ou un tableau
- 12. Comment vérifier si un nombre est un nombre entier de 32 bits utilisant Python?
- 13. C# Comment déterminer si un nombre est un multiple d'un autre?
- 14. Comment vérifier si un tableau est vide?
- 15. Comment vérifier si un nombre hexadécimal est égal à un nombre binaire spécifique?
- 16. Comment vérifier si un nombre est un nombre lorsqu'il s'agit d'une 'chaîne'?
- 17. Comment vérifier si un appareil exécute iOS 6?
- 18. Comment savoir si un nombre est un multiple de quatre en utilisant uniquement l'opérateur logique ET?
- 19. Vérifier si une chaîne est un nombre sur l'iPhone
- 20. Identifier si un nombre/chaîne contient un chiffre 6
- 21. vérifier si un nombre est int ou float
- 22. Comment vérifier si un var int contient un certain nombre
- 23. récursivement vérifier si le nombre est un premier
- 24. Vérifier si l'entrée est un nombre ou quelque chose d'autre
- 25. vérifier si le nombre entré est un chiffre en jquery
- 26. vérifier si un grand nombre d'int est égal
- 27. Regex pour vérifier si un nombre est pair
- 28. Comment détecter si un nombre donné est un nombre entier?
- 29. Comment vérifier si un pointeur est valide?
- 30. Comment vérifier si un double est nul?
Vous pouvez continuer à soustraire 6 du nombre et voir qu'il est à zéro. Si le résultat est inférieur à zéro, alors il n'est pas divisible par 6 –
Pas exactement efficace, mais vous pouvez implémenter une fonction de module en utilisant seulement la soustraction. – st0le
Si cela est utilisé dans un vrai programme: ne faites pas cela. Utilisez simplement 'num% 6', et laissez le compilateur déterminer quelle est la méthode la plus rapide. Il est plus que probable que l'utilisation de l'opération 'mod' du processeur sera plus rapide que n'importe quel hack que vous aurez créé. –