Kurze Frage zur Primzahlberechnung

Status
Nicht offen für weitere Antworten.

Javahs

Mitglied
Juten Tag,
hab da ein Problem. Und zwar komm ich nicht weiter bei folgender Problemstellung :

Primzahlen können wie folgt berechnet werden:
In einer Folge ganzer Zahlen > 1 wird jede einzelne daraufhin untersucht, ob sie durch
(mindestens) eine Zahl, die kleiner ist als sie selbst, ganzzahlig teilbar ist.
 Existiert keine solche Zahl, dann handelt es sich um eine Primzahl, ansonsten nicht.
Überlegen Sie sich anhand eines Nassi-Shneiderman-Struktogramms eine Implementierung
(ohne Arrays!) für diesen Algorithmus und setzen diesen unter Eclipse als Java-Programm um:
 Lesen Sie eine ganze Zahl von der Console ein. Geben Sie dazu eine
Eingabeaufforderung aus und lesen Sie eine Zahl ein.
 Geben Sie alle Primzahlen aus, die kleiner oder gleich dieser eingelesenen Zahl sind.
Anmerkung: Die Primzahlen sollen nicht gespeichert, sondern nur ausgegeben werden.
Weiterhin spielt es keine Rolle, ob die Primzahlen ab- oder aufsteigend abgegeben werden.

Bisher hab ich das:

Code:
public class primzahlen {


public static void main (String[] args) {


int i = 0;


int j = 0;


int counter = 0;


int eingabe = 97;


int teiler = 0;


int teiler2 = 0;


int counter2 = 0;


teiler = eingabe;



for(i=eingabe; i > 1; i--){


teiler--;


if(eingabe%teiler == 0) { 

counter++; 

}

}

if(counter == 1){

System.

out.println("Primzahl");

}

else{

System.

out.println("Keine Primzahl");

}

}

}
[/code]
 

Javahs

Mitglied
oh sry^^
Um die Aufgabe zu lösen muss man ja irgendwie 2 Schleifen ineinander packen oder so. Wenn man z.B. eine 7 eingibt soll das Programm die 7 erstmal durch alle Zahlen die kleiner sind als sie (6,5,4,3,2) teilen und gucken ob es einen Rest gibt. Wenn ein Rest rauskommt ist es nicht teilbar und somit eine Primzahl. Jetzt sollen aber auch alle Zahlen kleiner als 7 überprüft werden ob sie eine Primzahl sind. Habs jetzt soweit hinbekommen dass er eine Zahl durch alle kleineren teilt, aber noch nicht die Überprüfung ob die kleineren Zahlen auch primzahlen sind.
 

Maeher

Bekanntes Mitglied
Javahs hat gesagt.:
Primzahlen können wie folgt berechnet werden:
In einer Folge ganzer Zahlen > 1 wird jede einzelne daraufhin untersucht, ob sie durch
(mindestens) eine Zahl, die kleiner ist als sie selbst, ganzzahlig teilbar ist.
Hab ich Tomaten auf den Augen, oder hat da jemand vergessen Division durch 1 auszuschließen?
Als Methode zum prüfen einer Primzahl kannst du sowas verwenden:
Code:
static boolean isPrim(int x){
    for(int q=1; q<x; q++) { //Für alle möglichen Teiler
        if(x % q == 0) { //Ohne Rest teilbar
            return false;
        }
    }
    return true; //kein Teiler gefunden-->Primzahl
}
(Hoffe ich hab mich nicht vertan, man könnte q<x auch durch q<Math.sqrt(x) ersetzten, das spart Zeit.)
Edit: Meine Hoffnung hat sich nicht erfüllt, siehe unten :cry:
 

Javahs

Mitglied
scheiße^^ schon wieder keine Frage gestellt :D
Wie krieg ich sozusagen die Schleife um die bereits vorhandene Schleife drumrum, sodass er bei der eingebenen Zahl immer 1 abzieht und dann die ganze Prozedur immer wieder wiederholt?
 

Leroy42

Top Contributor
Mit Maeher's Methode:

(korrigiert:
Code:
static boolean isPrim(int x){ 
    for(int q=2; q<x; q++) { //Für alle möglichen Teiler 
        if(x % q == 0) { //Ohne Rest teilbar 
            return false; 
        } 
    } 
    return true; //kein Teiler gefunden-->Primzahl 
}
)

Code:
for (int i=2; i<= n; ++i) 
  if (isPrim(i))
    System.out.println(i);
 

Maeher

Bekanntes Mitglied
Leroy42 hat gesagt.:
Mit Maeher's Methode:

(korrigiert:
Hast recht, hab nicht aufgepasst.
Aber zu seiner Definition einer Primzahl passt meine Lösung trotzdem besser :lol:
Javahs hat gesagt.:
ob sie durch
(mindestens) eine Zahl, die kleiner ist als sie selbst, ganzzahlig teilbar ist.
Durch 1 geht immer (oder warum gilt die nicht, Diskriminierung?) ???:L
 

Baunty

Mitglied
hey :)

hab sowas auch gerade während meines praktikums gemacht

die variante dauert viiiiel zu lange vorallem bei hohen zahlen ;-)

Code:
public static void main(String[] args) {
        Prim pr = new Prim();
        pr.berechnePrimzahlenNeu(1000000);  //Musst hier natürlich dein Einlesen noch rein hauen, minimum is hier 8
        
    }

private void berechnePrimzahlenNeu(int bis) {
        
        int i, j, z, anzahlprimzahlen=5;
        long begin = System.currentTimeMillis();
        long dif;
        
        int [] prim = new int[bis];
        
        
        System.out.println("1");
        System.out.println(prim[0] = 1);
        System.out.println(prim[1] = 2);
        System.out.println(prim[2] = 3);
        System.out.println(prim[3] = 5);
        System.out.println(prim[4] = 7);
        
        
        
        for(i = 8; i<bis; i++) {
            
            z=0;

            for(j=0 ; j<anzahlprimzahlen;j++) {
                
                if (i % prim[j] == 0) {
                    z++;
                    if(z>1) {
                        break;
                    }
                }
            }
        
            
            if(z==1) {
                prim[anzahlprimzahlen++] = i;
                System.out.println(i);
            }
            
        }
        
        long ende = System.currentTimeMillis();
        dif = (ende - begin) / 1000;
        this.ausgabe(bis, anzahlprimzahlen, dif);
    }
    
    
    
    private void ausgabe(int grenze, int anzahl, long dif) {
        System.out.println("----------------------------");
        System.out.println("Bis " + grenze + " gibt es " +  anzahl  + " Primzahlen");
        System.out.println("Dauer : " + dif + " Sekunden");
    }

geht ca. 100 mal schneller
 

Milo

Bekanntes Mitglied
Hi,

Code:
/**
  *
  * Beschreibung  Aufgabe 6.1:
  *   Schreiben Sie ein Programm, das eine beliebige natuerliche Zahl ueberprueft,
  *   ob sie eine Primzahl ist oder nicht. Fuer alle Zahlen, die prim sind oder nicht,
  *   sollen die Teiler in einer Zeichenkette ausgegeben werden.
  *
  * @version 1.0 vom 30.05.2006
  * @author Michael Loesler - [url]http://diegeodaeten.de/downloads_datenverarbeitung_java.0.html[/url]
  */

import java.io.*;
public class DV_Aufgabe_6_1 {

  private static int getInputInteger(String question){
    int integervalue = 0;
    System.out.print(question);
    while (true){
      try {
        BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
        integervalue = Integer.parseInt(BR.readLine());
        break;
      }
      catch ( Exception e ){
        System.out.print("Fehler, "+question);
      }
    }
    return integervalue;
  }
  
  private static boolean[] getPrimeNumbers(int n){
    int sqrt_n = (int)Math.ceil(Math.sqrt(n+1));
    boolean A[] = new boolean[n+1];
    for (int i=2; i<=n; i++)
      A[i] = true;
    for (int i=2; i<sqrt_n; i++)
      if (A[i])
        for (int j=i*i; j<=n; j+=i)
          A[j] = false;
    return A;
  }
  
  private static String getDivider(int n){
    String str = "";
    for (int i=1; i<=n; i++)
      if (n%i==0)
        str+=i+", ";
    return str.substring(0,str.length()-2);
  }
  
  public static void main(String[] args) {
    int n = getInputInteger("n: ");
    if (getPrimeNumbers(n)[n])
      System.out.println("Primzahl: "+getDivider(n));
    else
      System.out.println("keine Primzahl: "+getDivider(n));
      
  }
}

Gruß Micha
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
L Kurze Frage... Java Basics - Anfänger-Themen 2
C Kurze Frage zur Polymorphie Java Basics - Anfänger-Themen 1
B Rekursion Schneeflocke - Kurze Frage zur Methode Java Basics - Anfänger-Themen 11
TechGirl LinkedList - kurze allgemeine Frage Java Basics - Anfänger-Themen 17
T Objektorientierung-Kurze Frage Java Basics - Anfänger-Themen 5
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
D Compiler-Fehler kurze Frage (Fehler): runde Klammern im Println Java Basics - Anfänger-Themen 3
M Baum Code kurze frage ... Java Basics - Anfänger-Themen 6
M kurze frage zu meinem Code ... Java Basics - Anfänger-Themen 3
T Kurze Frage zu Arrays Java Basics - Anfänger-Themen 4
S Java - Client/Server mit Stomp kurze Frage Java Basics - Anfänger-Themen 0
T Eine kurze frage vor der prüfung bitte. Java Basics - Anfänger-Themen 5
X Kurze Frage zu Java Doc Java Basics - Anfänger-Themen 3
G Kurze Frage zu Arrays Java Basics - Anfänger-Themen 3
G Warteschlange/Reihungen kurze syntaktische Frage Java Basics - Anfänger-Themen 2
J Erste Schritte Kurze Frage zu Listenern und If-Bedingung Java Basics - Anfänger-Themen 2
S Erste Schritte HashMap Kurze Frage - Werte über Schleife ausgeben Java Basics - Anfänger-Themen 30
M kurze frage: Ohne index.of position von string angeben Java Basics - Anfänger-Themen 16
A Methoden Langer Text, kurze Frage Java Basics - Anfänger-Themen 10
S Kurze Frage zur Effizienz: Java Basics - Anfänger-Themen 4
R Kurze Ouelltext frage Java Basics - Anfänger-Themen 3
M kurze Frage zu Graphics Java Basics - Anfänger-Themen 5
Screen Kurze Frage Umwandlung von Zahlen Java Basics - Anfänger-Themen 2
J Math.random() - kurze frage. Java Basics - Anfänger-Themen 20
S Kurze Frage zum Ergebniss Java Basics - Anfänger-Themen 5
A kurze frage zu arrays und deren zuweisung Java Basics - Anfänger-Themen 11
B kurze Frage if(!) Java Basics - Anfänger-Themen 19
K Kurze Frage zur Sortierung von Array-Inhalten Java Basics - Anfänger-Themen 5
G kurze frage zu if schleifen Java Basics - Anfänger-Themen 15
G kurze if frage Java Basics - Anfänger-Themen 8
G Kurze Frage zur Erstellung des Projektplans Java Basics - Anfänger-Themen 7
C OOP - Kurze Frage Java Basics - Anfänger-Themen 12
F Kurze Frage: JLabel in BorderLayout einfügen Java Basics - Anfänger-Themen 2
J QuickSort - kurze Frage Java Basics - Anfänger-Themen 9
A Kurze Frage zur Verwendung von this Java Basics - Anfänger-Themen 9
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
S Kurze Verständnissfrage Java Basics - Anfänger-Themen 4
N Kurze Hilfe !! Java Basics - Anfänger-Themen 3
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
B Methoden Tricky, kurze Schreibweise? Java Basics - Anfänger-Themen 3
M Kurze Verständnisfrage zu einer Java Aufgabe Java Basics - Anfänger-Themen 12
V Ganz kurze Java-Hilfe - Ich finde meinen Fehler nicht Java Basics - Anfänger-Themen 4
R Kurze Linien alle x-Pixel Java Basics - Anfänger-Themen 2
U ArrayList kurze Einführung Java Basics - Anfänger-Themen 3
2 Datentypen Kurze Schreibform bei ArrayList (Vs String Array) Java Basics - Anfänger-Themen 6
P OOP 3 kurze Fragen Java Basics - Anfänger-Themen 2
J Benötige kurze Definition zum Programm Java Basics - Anfänger-Themen 2
R klausurvorbereitung uni HILFE!! kurze fragen,kurze antworten Java Basics - Anfänger-Themen 9
D 2 kurze Fragen Java Basics - Anfänger-Themen 5
Q 2 kurze Fragen Java Basics - Anfänger-Themen 3
D Kurze Fragen zu setVisible. Java Basics - Anfänger-Themen 4
M Kurze Pause ins Programm einbauen Java Basics - Anfänger-Themen 5
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben