Die Suche nach ganzen Zahlen, die von 6 oder 7 teilbar sind, aber nicht beide
-
20-08-2019 - |
Frage
Ich versuche, ein Programm zu schreiben, das die ganzen Zahlen zwischen 1 und 100 anzeigt, die entweder 6 oder 7 teilbar sind aber nicht beide .
Hier ist mein 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");
}
}
}
Der obige Code zeigt folgende Antworten: 6,7,12,14,18,21,24,28,30,35,36, 42 , 48,49,54,56,60,63,66,70,72,77 , 78, 84 , 90,91,96,98
Nun ist die fette Nummern 42 und 84 sind beide divisbile von 6 und 7. Wenn ich nun die ||
&&
in dem obigen Code zu ändern, das Ergebnis zeigt, nur 42 und 84
Welche Änderung soll ich diese 2 Zahlen aus dem Endergebnis entfernen tun?
Lösung
Sie müssen Ihren Zustand aussehen lassen wie:
boolean num = (i % 6 == 0 || i % 7 == 0) && !(i % 6 == 0 && i % 7 == 0);
Das ist im Grunde Umwandlung " aber nicht beide ", um Java-Code:)
Andere Tipps
XOR ist der Weg zu gehen.
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");
}
}
}
}
Sie müssen eine zusätzliche Überprüfung für „aber nicht beide“. Ich denke, es sollte sein:
boolean num = ((i% 6 == 0) || (i% 7 == 0)) && (i% 42 = 0!);
Sie können auch versuchen,
boolean num = ((i % 6 == 0) != (i % 7 == 0));
Denken Sie darüber nach, was es bedeutet von 6 und 7 ... die Antwort auf das Leben das Universum und alles teilbar zu sein.
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");
}
}
}
Hier ist ein Ausschnitt, der als gut in C funktionieren soll ++ aber boolean ändern ...
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;
Ein wenig vereinfachte Version
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);