OOP Zahl durch Quadrate darstellbar

denn_is

Mitglied
ich muss berechnen, ob sich eine übergebene Zahl durch 1² + 2² +..., bzw durch 2² +...,...3³ +... darstellen lässt. Bei z.B. 4 kommt aber das richtige Ergebnis nicht...kann jemand helfen?

Java:
	public static boolean check(long number) {
		boolean isPowerNumber = false;
		long x = 1;
		long pows = 1;
		while (isPowerNumber == false) {
			if (pows < number) {
				pows = pows + pow(x + 1);
			} else if (pows == number) {
				isPowerNumber = true;
			} else if (pows > number && pow(x) < number) {
				x++;
			} else {
				break;
			}
		}
		return isPowerNumber;

	}

	public static long pow(long x) {
		long power = (long) Math.pow(x, x);
		return power;
	}
 

AquaBall

Top Contributor
ich muss berechnen, ob sich eine übergebene Zahl durch 1² + 2² +..., bzw durch 2² +...,...3³ +... darstellen lässt. Bei z.B. 4 kommt aber das richtige Ergebnis nicht...kann jemand helfen?

Java:
	public static boolean check(long number) {
		boolean isPowerNumber = false;
		long x = 1;
		long pows = 1;
		while (isPowerNumber == false) {
			if (pows < number) {
				pows = pows + pow(x + 1);
			} else if (pows == number) {
				isPowerNumber = true;
			} else if (pows > number && pow(x) < number) {
				x++;
			} else {
				break;
			}
		}
		return isPowerNumber;

	}

	public static long pow(long x) {
		long power = (long) Math.pow(x, x);
		return power;
	}

Du hast auch nen Logikfehler drin und nen Rechenfehler!
(wenn pow richtig wäre(!) )

für die '4':
1: pows=1+1²
2: pows= 2+2²; x=2
3: pows= 6(!) + 4
Break

Doofes Beispiel, weil 1 und 2 bei Addition, Multiplikation, als auch bei Exponent Sonderfälle sind,

Die beiden Gründe sind aber offensichtlich (sobald du selbst rechnest) und leicht zu beheben.
Findest du ihn?

PS: für die 4 ist es egal, dass die pow-Methode falsch ist! weil 1*1=1hoch1 und 2*2=2² erst ab 3 knirscht es!
 
Zuletzt bearbeitet:

denn_is

Mitglied
Java:
 } else if (pows > number && pow(x) < number) {
              pows=pow(x+1);

dachte das klappt, aber jetzt bin ich irgendwie in ner endlosschleife drin...
 

denn_is

Mitglied
habs grad versucht...das problem is denk ich auch, dass er das ganze nur einmal rechnet, aber irgendwie check ich grad nicht, wie ich das anders machen kann...
 

AquaBall

Top Contributor
So dann Langsam:
Bau dir mal ein println ein, und kontrolliere in jedem Durchlauf was die Werte sind:
Java:
System.out.printl( "Zahl: " + number + "Runde " + x +"  Summe="+ pows + "  Power="+ pow(x));
 

denn_is

Mitglied
ok hab ich gemacht...habs jetzt immerhin schon, dass pows richtig hochzählt, also 1+4+27 etc. aber er kommt irgendwie nicht in den zweig dass pow>number
 

denn_is

Mitglied
Java:
	public static void main(String[] args) {
		long number = 3408;
		boolean isPowerNumber = false;
		long x = 1;
		long pows = 0;
		while (isPowerNumber == false) {
			if (pows < number) {
				pows = pows + pow(x);
			} else if (pows == number) {
				isPowerNumber = true;
			} else if (pows > number && pow(x) < number) {
				x = 0;
			} else {
				break;
			}
			x++;
			System.out.println("Zahl: " + number + "Runde " + x + "  Summe="
					+ pows + "  Power=" + pow(x));
		}
	}

	public static long pow(long x) {
		long power = (long) Math.pow(x, x);
		return power;
	}

Ausgabe:
Zahl: 3408Runde 2 Summe=1 Power=4
Zahl: 3408Runde 3 Summe=5 Power=27
Zahl: 3408Runde 4 Summe=32 Power=256
Zahl: 3408Runde 5 Summe=288 Power=3125
Zahl: 3408Runde 6 Summe=3413 Power=46656
 

AquaBall

Top Contributor
Ausgabe:
Zahl: 3408Runde 2 Summe=1 Power=4
Zahl: 3408Runde 3 Summe=5 Power=27
Zahl: 3408Runde 4 Summe=32 Power=256
Zahl: 3408Runde 5 Summe=288 Power=3125
Zahl: 3408Runde 6 Summe=3413 Power=46656

Super du hast schon mal erkannt, dass pows mit 0 beginnen muss.

Nun der nächste Schritt:
Hast du die Ausgabe durchgelesen? Was passiert denn da mit deinem Rundenzähler?
Hast du die Ausgabe nachgerechnet? Die Quadratzahlen kann man schon ein bisschen kennen!
Und wenn die Zahlen passen würden (!worauf du ja schon hingewiesen wurdest):
Was passiert nun bei Runde 6 und danach, bzw. was SOLLTE nun passieren? Ein IF ändert sich nicht, wenn man die Werte nicht ändert!

So irgendwie hättest du es am liebsten kleingeschnitten und vorgekaut, nicht?

PS: teste doch mit Zahlen die du überschauen kannst: z.b. mit 14 oder 15 und 16 (3 unterschiedliche Ergebnisse!)
 

AquaBall

Top Contributor
PS: Damit du etwas zum kontrollieren hast:
Bei all diesen Zahlen muss TRUE raus kommen bei allen anderen (unter 100) FALSE:
1
4
5
9
13
14
16
25
29
30
36
41
49
50
54
55
61
64
77
81
85
86
90
91
100
 

Mujahiddin

Top Contributor
Ist die Frage, ob man Sachen quadratisch darstellen kann (1²+2²+3²...n²) bzw (1²+3²+5²+...+n²)
oder generell in n^m (m > 1; n,m∈N) Schreibweise darstellen kann? Oder nur 1+2²+3³+4^4 etc.

Nächste Frage:
Was hat das Thema mit OOP zu tun?
 
Zuletzt bearbeitet:

jaykop

Mitglied
Hi,

habe gerade auch versucht die Aufgabe zu lösen. Am Anfang war ich bischen irritiert was in der Aufgaben stellung gemeint wurde. Ich habe es jetzt so verstanden und umgesetzt das folgende Bedingungen gelten müssen. Ist dies so richtig oder habe ich das falsch verstanden ? Wenn das so richtig ist verstehe ich nicht wie bei dem letzten Tip von AquaBall die Zahl 29 berechnet wurde ?

1.Bedingung:
// Zahl darstellbar durch 1^2 , 2^2 , 3^2...
2.Bedingung:
// Zahl darstellbar durch 1^2 + 2^2 + 3^2...
3.Bedingung:
// Zahl darstellbar durch 1^2 + 2^2 || 2^2+3^2 || 3^2+4^2....
 
Zuletzt bearbeitet:

AquaBall

Top Contributor
... Wenn das so richtig ist verstehe ich nicht wie bei dem letzten Tip von AquaBall die Zahl 29 berechnet wurde ?
...
// Zahl darstellbar durch 1^2 + 2^2
Code:
+...
|| 2^2+3^2
Code:
+...
|| 3^2+4^2....
Fehlen diese 3 markierten Punkt in deinem Verständnis absichtlich, oder hast du nur zuwenig gerechnet?


2^2+3^2+4^2
 

jaykop

Mitglied
@ AquaBall:

Also ich habe die 3 Bedingung nicht so verstanden wie von dir beschrieben. Ich komme halt an alle Werte dran nur die 29 kommt nicht in meiner Liste vor.

Also bei meinem Code ist das im moment so das der in den Runden wie folgt rechnet damit die 3 Bedingung gilt.

1. Runde 1^2+2^2
2. Runde 2^2+3^2
3. Runde 3^2+4^2
4. Runde 4^2+5^2
...usw

Bei der Version müsste ja es dann so sein

1. Runde 1^2+2^2+3^2+4^2....usw
2. Runde 2^2+3^2+4^2+5^2....usw
3. Runde 3^2+4^2+5^2+6^2....usw
oder war es so gemeint das man direkt mit 2^2 anfängt ohne 1^2


Hier ist mal mein Code dazu:
Java:
     public static long pow(long x) {
        long power = (long) Math.pow(x, 2);
        return power;
    }

    public static void main(String[] args) {
        
        boolean isPowerNumber = false;
        long Runde = 1;
        long Summe = 0;
        long Summe2= 0;
        long Summe3= 0;
        long Nummer = 55;
        
        while (isPowerNumber == false){
            
            // für 1^2 , 2^2 , 3^2
            if (Summe < Nummer){
                Summe = pow(Runde);
            }
            
            // für 1^2 + 2^2 + 3^2
            if (Summe2 < Nummer){
                Summe2 = Summe2 + pow(Runde);
            }
            
            // für 1^2 + 2^2 ... 2^2+3^2 ... 3^2+4^2
            if (Summe3 < Nummer){
                Summe3 = pow(Runde) + pow(Runde-1);
            }
            
            // falls einer der Summen gleich Nummer true setzen
            if  (Summe == Nummer || Summe2 == Nummer || Summe3 == Nummer) {
                isPowerNumber = true;
                System.out.println("Die zahl ist darstellbar");
                
            }
            
            // falls einer der Summen größer als Nummer ist abrechen
            if (Summe > Nummer || Summe2 > Nummer || Summe3 > Nummer){
                break;
            }
            
            System.out.println("Runde: " + Runde + " Summe: " + Summe + " Summe2: " + Summe2 + " Summe3: " + Summe3 + " Nummer: " + Nummer);
            Summe3 = 0;
            Runde++;
            
        }       
    }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
U Zahl durch 5 teilbar Java Basics - Anfänger-Themen 14
S Erkennen ob Zahl durch 500Teilbar ist Java Basics - Anfänger-Themen 21
C Zahl umkehren durch Rekursion Java Basics - Anfänger-Themen 14
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
B Überprüfung dass Zahl nur aus 0,1 besteht Java Basics - Anfänger-Themen 2
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
M zahl raten Java Basics - Anfänger-Themen 1
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
I Zahl aufrunden (Zeit) Java Basics - Anfänger-Themen 43
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
R Fortlaufende Zahl Java Basics - Anfänger-Themen 3
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
HelpInneed Zahl. Java Basics - Anfänger-Themen 2
R Perfekte Zahl Java Basics - Anfänger-Themen 8
D Mittlerste Zahl Java Basics - Anfänger-Themen 17
D Grösste Zahl in einer Folge herausfinden. (ULAM) Java Basics - Anfänger-Themen 9
Poppigescorn Häufigkeit einer zahl zählen Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
J Verdoppeln einer Zahl (in dem Fall Münzen) Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
T Zahl in Array ersetzen Java Basics - Anfänger-Themen 2
Abraham42 Prozentsatz einer Zahl mehrmals Java Basics - Anfänger-Themen 2
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
Kingamadeus2000 Anzahl der Ziffern der kürzesten Zahl aus einem zurückliefern Java Basics - Anfänger-Themen 1
V Beliebige Dreistellige Zahl Teiler finden Java Basics - Anfänger-Themen 4
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
S Zahl eingeben Java Basics - Anfänger-Themen 8
A Java . punkt neben einer Zahl. Java Basics - Anfänger-Themen 1
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
J Die größte Zahl anzeigen Java Basics - Anfänger-Themen 19
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
L Erhöhung der Zahl Java Basics - Anfänger-Themen 3
F Negative Zahl erzwingen Java Basics - Anfänger-Themen 3
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23
T Eulersche Zahl e Java Basics - Anfänger-Themen 5
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
B Eine ganze Zahl zerlegen. Java Basics - Anfänger-Themen 4
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
H Harshad-Zahl (Nivenzahl) und Palindrom überprüfen Java Basics - Anfänger-Themen 2
I Wie viele 1 an Bits hat die Zahl x? Java Basics - Anfänger-Themen 5
A Gewürfelte Zahl ausgeben Java Basics - Anfänger-Themen 10
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
A Überprüfen, ober eine Zahl Ziffer enthält Java Basics - Anfänger-Themen 12
O Markoff-Zahl Java Basics - Anfänger-Themen 22
B Datenbank, aktuelle Ende als Zahl an Label übergeben Java Basics - Anfänger-Themen 7
L 10-Stellige Zahl hochzählen lassen Java Basics - Anfänger-Themen 1
H String und Zahl Java Basics - Anfänger-Themen 10
R Zahl 1 bis 100 erraten Java Basics - Anfänger-Themen 12
Y Konkrete Hilfe gesucht - Anzahl der Stellen einer eingegebenen Zahl überprüfen Java Basics - Anfänger-Themen 5
J Button klick bei eine bestimmten Zahl Java Basics - Anfänger-Themen 8
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
J Für jeden Buchstaben eine Zahl Java Basics - Anfänger-Themen 1
H Würfelspiel, stop bei gleicher Zahl Java Basics - Anfänger-Themen 4
B Array - die Häufigkeit der Zahl zählen Java Basics - Anfänger-Themen 9
I Erste Schritte Testen, ob eine Zahl eine Primzahl ist Java Basics - Anfänger-Themen 8
J Rekursive Methode - Ziffern einer Zahl ausgeben Java Basics - Anfänger-Themen 2
I Eulersche Zahl Java Basics - Anfänger-Themen 6
F Produkt d. Ziffern einer Zahl..?! Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4
T Datentypen char als Buchstaben statt als Zahl ausgeben Java Basics - Anfänger-Themen 4
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
M Mit 2 Threads eine Zahl hochzählen Java Basics - Anfänger-Themen 13
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
C Erste Ziffer einer Zahl Java Basics - Anfänger-Themen 46

Ähnliche Java Themen

Neue Themen


Oben