Primfaktor Zerlegung

Status
Nicht offen für weitere Antworten.
S

Sticky

Gast
Muss ein kleines Programm schreiben...ist mir auch etwas gelungen.
Leider ist die Ausgabe nicht ganz wie sie sein soll.
Bekomme nach dem letzten Wert auch "*" dass will ich weg haben.
Leider habe ich einiges versucht, es aber nicht wegbekomen. Hat jemand von euch eine Idee ?

Code:
package ti1;

public class Primfaktor {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		long p = 768L;
		int i;

		System.out.print(p + " = ");

		for (i = 2; i <= p;) {

			if (p % i == 0) {
				System.out.print(i+" * ");
				p = p / i;
			
				
				
			        }
				
				if (p % i != 0)
				i++;
			

		}// for

	}// main

}// class

Ausgabe müsste so aussehen: 768 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 3

sieht aber leider so aus :) 768 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 3 *
 

Leroy42

Top Contributor
Dreh die Logik doch einfach um.

Definiere außerhalb der Schleife ein boolean
Code:
boolean firstFactor = true
und schreibe innerhalb der Schleife
Code:
if (!firstFactor) System.out.print(" * ");
else firstFactor = false;
System.out.print(i);
 
S

Sticky

Gast
Soweit sind wir leider noch nicht In Java. Hatte erst 2 Vorlesungen und boolean sind mir noch fremd.
Gibt es evtl. eine noch trivialere Lösung ?
 

Leroy42

Top Contributor
Nunja, boolean ist wirklich nicht schwer zu verstehen.
Ob es eine trivialere Lösung gibt, weiß ich nicht. Auf jeden Fall
gibts eine umständlicher;

Definiere außerhalb der Schleife ein int
Code:
int anzahlFaktoren = 0;
und schreibe innerhalb der Schleife
Code:
if (anzahlFaktoren > 0) System.out.print(" * ");
else anzahlFaktoren++;
System.out.print(i);
[/quote]
 
G

Guest

Gast
Danke für die netten Antworten. Habe nach langem Grübeln ausserhalb der for-Schleife
ein if (i >= p) System.out.print(i+ " ");
eingebaut...jetzt habe ich endlich meine Ausgabe...huyyyy :D
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben