Trouver des entiers qui sont divisibles par 6 ou 7 mais pas les deux
-
20-08-2019 - |
Question
J'essaie d'écrire un programme qui affiche les entiers divisibles par 6 ou 7 mais pas les deux , entre 1 et 100 .
Voici mon code:
import acm.program.*;
public class Problem4 extends ConsoleProgram
{
public void run()
{
for (int i = 1; i <= 100; i++)
{
boolean num = ((i % 6 == 0) || (i % 7 == 0));
if (num == true)
println(i + " is divisible");
}
}
}
Le code ci-dessus montre les réponses suivantes: 6,7,12,14,18,21,24,28,30,35,36, 42 , 48,49,54,56,60,63,70,72,77 , 78, 84 , 90,91,96,98
Les chiffres en gras 42 et 84 sont tous les deux divisibles par 6 et 7. Maintenant, si je modifie le ||
en &&
dans le code ci-dessus, le résultat s'affiche uniquement en 42 et 84.
Quel changement dois-je faire pour supprimer ces 2 nombres du résultat final?
La solution
vous devez donner à votre état la forme suivante:
boolean num = (i % 6 == 0 || i % 7 == 0) && !(i % 6 == 0 && i % 7 == 0);
qui convertit fondamentalement & "; mais pas les deux &"; au code Java:)
Autres conseils
XOR est la voie à suivre.
import acm.program.*;
public class Problem4 extends ConsoleProgram {
public void run() {
for (int i = 1; i <= 100; i++) {
if ( (i % 6 == 0) ^ (i % 7 == 0) ) {
println(i + " is divisible");
}
}
}
}
Vous avez besoin d'un contrôle supplémentaire pour & "mais pas les deux &"; Je pense que cela devrait être:
boolean num = ((i% 6 == 0) || (i% 7 == 0)) & amp; & amp; (i% 42! = 0);
vous pouvez également essayer
boolean num = ((i % 6 == 0) != (i % 7 == 0));
Réfléchissez à ce que signifie être divisible par 6 et 7 ... la réponse à la vie, à l'univers et à tout.
import acm.program.*;
public class Problem4 extends ConsoleProgram
{
public void run()
{
for (int i = 1; i <= 100; i++)
{
boolean num = ((i % 6 == 0) || (i % 7 == 0));
boolean both = ((i % 6 == 0) && (i % 7 == 0));
if ((num == true) && (both == false))
println(i + " is divisible");
}
}
}
Voici un extrait qui devrait fonctionner aussi bien en C ++ mais changer en booléen ...
int value;
if ((value % 6 == 0 && value % 7 != 0) || (value % 6 != 0 && value % 7 == 0))
cout << "Is " << value << " divisible by 6 or 7, but not both? true" << endl;
else
cout << "Is " << value << " divisible by 6 or 7, but not both? false" << endl;
Une version un peu simplifiée
for(int i=1; i<=100; i++) {
// Either Divisible by 6 or 7 but not both
if((i%6==0 && i%7!=0) ||( i%7==0 && i%6!=0)) {
println(i);