Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Zerlegung einer Zahl in Primfaktoren » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Zerlegung einer Zahl in Primfaktoren
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Zerlegung einer Zahl in Primfaktoren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich möchte eine Zahl in Primfaktoren zerlegen. Allerdings funktioniert folgendes nicht:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication2;

import java.util.ArrayList;

/**
 *
 * @author
 */
public class EA6_Aufgabe_2_1 {
    
    
    public static boolean isPrim(double value) { 
        if (value <= 2) { 
            return (value == 2); 
        } 
        for (double i = 2.0; i * i <= value; i++) { 
            if ((value % i == 0) && ((int)value == value)) { 
                return false; 
            } 
        } 
        return true; 
    }
    
    
        
    public ArrayList<Double> zerlege(int n){
        ArrayList<Double> z = new ArrayList();
       for (int i= 3; i< (int) Math.sqrt(n); i++){
           if (isPrim(i)){
               
                   if (isPrim((n*1.0)/(i*1.0))){
                       z.add(i*1.0);
                       z.add(n*1.0/i);
                   }
               }
           }
       
       return z;
    }
    
    
    
    public static void main(String[] args) {
        
        EA6_Aufgabe_2_1 ea6 = new EA6_Aufgabe_2_1();
        ArrayList<Double> ergebnis = new ArrayList();
        ergebnis = ea6.zerlege(3599);
        for (double i: ergebnis) System.out.println("Ich habe gefunden " + i);
    }
}

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Haevelin: 26.12.2017 12:24.

26.12.2017 12:24 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
import java.util.ArrayList;

public class EA6_Aufgabe_2_1 {

	// brauchen wir gar nicht
	// unten werden die Faktoren der Größe nach getestet
	// wenn die Zahl nicht prim ist, wurden die Primfaktoren vorher schon gefunden
	public static boolean isPrim(int value) {
		if (value < 2) {
			return false;
		}
		for (int i = 2; i * i <= value; i++) {
			if ((value % i == 0)) {
				return true; // da hattest du false
			}
		}
		return false; // da hattest du true
	}

	public ArrayList<Integer> zerlege(int n) {
		// diamond ergänzt, wir wollen eine generische Liste
		ArrayList<Integer> z = new ArrayList<>();
		//starte bei 2, das ist auch ein möglicher Primfaktor
		// <=, nicht <, besser mit i*i <= n
		for (int i = 2; i <= (int) Math.sqrt(n); i++) {
			while (n % i == 0) {
				z.add(i);
				n /= i;
			}
		}
		//letzten Faktor auch noch hinzufügen
		if (n != 1)
			z.add(n);
		return z;
	}

	public static void main(String[] args) {
		EA6_Aufgabe_2_1 ea6 = new EA6_Aufgabe_2_1();
		// kein Grund, eine Liste anzulegen, wenn direkt eine neue zugewiesen wird
		ArrayList<Integer> ergebnis = ea6.zerlege(3599);
		for (int i : ergebnis)
			System.out.println("Ich habe gefunden " + i);
	}
}


__________________
Syntax Highlighting fürs Board (Link)
28.12.2017 16:33 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Zerlegung einer Zahl in Primfaktoren