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
Beiträge zu diesem Thema Autor Datum
 Zerlegung einer Zahl in Primfaktoren Haevelin 26.12.2017 12:24
 RE: Zerlegung einer Zahl in Primfaktoren eulerscheZahl 28.12.2017 16:33

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