Primzahlen Zähler Programm / Benachbarte Primzahlen

Rambo007

Mitglied
Hallo,
ich muss ein Java Programm erstellen, welche die Primzahlen bis zur gewünschten Zahl ausgibt also in dieser Form: Also ich tippe die Zahl ein und er zählt bis dahin in diesen Schritten
2 : 2 + ?
3 : 3 + ?
5 : 5 + ?
7 : 7 + ?
9 : 9 + ?
.....

Das habe ich bis jetzt hinbekommen. Jetzt kommt erst die richtige Aufgabe. Bei der jeweiligen Primzahl soll das Programm die Primzahl unter Ihr und über Ihr vergleichen und die Zahl die am nähsten ist soll er an die Stelle des Fragezeichen ausgeben. Also:
2 : 2 + 3
3 : 3 + 2
5 : 5 + 7
7 : 7 + 5
9 : 9 + 11
.....

Würde über jegliche Hilfe mich freuen Danke im voraus
 
Aber ich brauche ein Code wo man z.B 1000 eingibt und es es auspuckt. Hatte mit dem Array gemacht aber das kann man nicht tage lang eintippen.
 
Aber ich brauche ein Code wo man z.B 1000 eingibt und es es auspuckt. Hatte mit dem Array gemacht aber das kann man nicht tage lang eintippen.
😀 Witzig!

Dafür hast du ja die erste Methode, oder etwa nicht? Du übergibst an die Methode die Zahl, welche zugleich die Obergrenze der Reihenfolge ist, und zählst in einer for-Schleife mit. Immer dann, wenn der Zähler der Schleife eine Primzahl ist, wird diese im Array gespeichert, welcher am Ende getrimmt und zurückgegeben wird.
 
So sieht der Primzahlen Zähler aus wo muss ich jetzt was machen ? Bin noch recht neu mit dem Programmieren tut mir leid

Java:
package Aufgaben;
import java.util.Scanner;
public class MerkwürdigerPrimzahlenZähler {
    public static void main(String[] args) {
      
        //Eingabe
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Bis wie viel soll der merkwüdige Primzahlenzähler Zählen ?");
        int biswieviel = eingabe.nextInt();
      
        int n = biswieviel;
        // beginne bei der Zahl 2 da 1 keine Primzahl ist
        for (int i = 2; i <= n; i++) {
            // isPrimzahl ist ein Wahrheitswert, um zu überprüfen ob wir eine
            // Primzahl gefunden haben. falls nicht wird sie später auf false
            // gesetzt.
            boolean isPrimzahl = true;
            // i durch jede Zahl kleiner als i zu teilen und zu überprüfen, ob
            // ein Rest übrig bleibt. BSP. im wiki 25=i und j wäre die Variable
            // die hochgezählt wird
            for (int j = 2; j < i && isPrimzahl; j++) {
                // Wenn eine division als rest 0 hat dann ist die Zahl keine
                // Primzahl und somit ist isPrimzahl auf false zu setzten
                if ((i % j) == 0) {
                    isPrimzahl = false;
                }
            }
            // gib eine Meldung aus falls es sich um eine Primzahl handelt.
            if (isPrimzahl) {
              
  
                System.out.println(i + " : " + i + " + " );  
                break;
                      
                      
      
          }  }    }
      
      
    }
 
Zuletzt bearbeitet von einem Moderator:
😀 Witzig!

Dafür hast du ja die erste Methode, oder etwa nicht? Du übergibst an die Methode die Zahl, welche zugleich die Obergrenze der Reihenfolge ist, und zählst in einer for-Schleife mit. Immer dann, wenn der Zähler der Schleife eine Primzahl ist, wird diese im Array gespeichert, welcher am Ende getrimmt und zurückgegeben wird.


Danke im voraus
 
ich muss ein Java Programm erstellen
Da es sich hier offensichtlich um Hausaufgaben o.ä. handelt, wird es die Lösung als Code nicht geben.
Aber ich helfe dir in dem ich dir die Vorgehensweise erläutere:
Java:
public class PrimzahlenSpiel
{

    public final static int ARRAY_LAENGE = 100;

    public static void main(String[] args)
    {
        int[] primzahlen = generierePrimzahlen(ARRAY_LAENGE);
        gebePrimzahlenAus(primzahlen);
        int testprimzahl = 41;
        int naechstliegendePrimzahlZu = sucheNaechstliegendePrimzahl(testprimzahl, primzahlen);
        System.out.println(String.format(Locale.GERMAN,"Die Nächstliegende Zahl zu der Primzahl %s ist die Primzahl %s%n", testprimzahl, naechstliegendePrimzahlZu));

    }

    private static int[] generierePrimzahlen(int weite)
    {
        //Ermittele die Zahl der moeglichen Zahlen aus der Reihenfolge "weite"
        //Erstelle ein Array, befuelle dieses mit Primzahlen aus der Reihenfolge "weite" und gib es zurueck
    }

    private static boolean istPrimzahl(int wert)
    {
        //Hier testest du, ob die Zahl "wert" eine Primzahl ist
    }

    private static int sucheNaechstliegendePrimzahl(int testprimzahl, int[] primzahlen)
    {
        //Hier vergleichst du den Abstand zu den Zahlen jeweils rechts und linksliegend zu der "testprimzahl" und gibst diese zurueck
    }

    private static int findePositionImArray(int testprimzahl, int[] primzahlen)
    {
       //Hier suchst du im Array "primzahlen" nach Uebereinstimmung mit der "testprimzahl" und gibst die
       //Position im Array als Zahl zurueck
    }

    private static void gebePrimzahlenAus(int[] primzahlen)
    {
        for (int i = 0; i < primzahlen.length; i++) {
            if (i < primzahlen.length ) {
                System.out.print(primzahlen[i] + ", ");
            } else {
                System.out.print(primzahlen[i]);
            }
        }
        System.out.println();
    }

}
/** Output */
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
Die Nächstliegende Zahl zu der Primzahl 41 ist die Primzahl 43
Probiere mal!

Nebenbei: benutze bitte Code-Tags, wenn du Code postest. Viel angenehmer zu lesen. [code=Java]Dein Code[/code]
 
Ist jedenfalls ein sehr komplexer Code. Hausaufgabe ist es nicht. Habe ich beim Praktikum als Übung bekommen jedoch sitze ich schon seit einem Monat dran habe eigentlich schon alle Hoffnung aufgegeben, da ich kein Überblick habe. Bin auch noch Anfänger. Würde mich über die Lösung freuen da ich selber nicht drauf kommen kann. Würde natürlich danach erstmal das Programm studieren müssen da ich selber wissen möchtet was ich ich seit einem Monat falsch mache
Heißt also ich werde draus lernen
 
@Rambo007
Ja das Leben ist hart. Du, vor drei Wochen ist ein Verwandter gestorben, welcher mir in meiner Jugend sehr nah stand. Vor zwei Wochen flog ich vom Motorrad und brach mir mein Oberarm und mehrere Rippen. Zudem ist das Wetter hier sehr bescheiden, es ist kalt und nass. Aber nichtsdestotrotz stand ich heute Morgen auf, machte meine Übungen und lernte etwas. Und jetzt schreibe ich dir diese Zeilen. Was ich sagen will, es gibt es da draußen nur Märchen, welche von tapferen Helden und Prinzen in den glänzenden Rüstungen, geretteten Prinzessinnen und geschlagenen Feinden und Bösewichten berichten und du hast die freie Wahl, eine Rolle einzunehmen. Darum packe den Bullen bei den Hörner oder lass es sein.
Ich bin nur ehrlich..
 
jedoch sitze ich schon seit einem Monat dran
Sag mal, das meinst Du jetzt aber nicht ernst, oder?

welche die Primzahlen bis zur gewünschten Zahl ausgibt also in dieser Form
[...]
9 : 9 + 11
Dir ist aber schon klar, dass 9 keine Primzahl ist, oder?

// i durch jede Zahl kleiner als i zu teilen und zu überprüfen, ob
// ein Rest übrig bleibt.
Für Deine Schleifen habe ich drei Tipps:
1. Primzahlen sind mit Ausnahme der 2 immer ungerade
2. Eine ungerade Zahl lässt sich höchstens durch eine ungerade Zahl ohne Rest teilen
3. i*j = j*i
 
Wie gesagt bin noch ein Anfänger. Programmiere erst seit 1-2 Monaten also haben jetzt neulich in der Schule Das Thema Methoden. Javinner dein Code ist für mich sehr unübersichtlich also ich kenne mehr als die hälfte der Codes nicht. Da es sich nicht um eine Hausaufgabe oder jegliches Handelt würde ich mich freuen wenn ihr mir die Lösung zu schicken könntet.
Oder es so erklärt das ich es auch als Anfänger verstehen kann

Danke im Voraus !
 
Habe ich beim Praktikum als Übung bekommen
Da es sich nicht um eine Hausaufgabe oder jegliches Handelt
Ein Widerspruch in sich..
würde ich mich freuen wenn ihr mir die Lösung zu schicken könntet
Das glaube ich gern! Mit der Einstellung, die DU auf das Parkett legst, geschweige deiner Bemühungen, das Problem zu lösen, bin ich abgeneigt, dir eine auszuhändigen. Zudem solltest du dich fürs Erste auseinander setzen, welche Zahl eine Primzahl ist und welche nicht!
 
Das habe ich falls geschrieben mit den Primzahlen kann ja mal passieren. Jedoch geht es nicht um die Aufgabe es geht darum das ich wissen möchte was ich seit einem Monat verkehrt mache. Also das ist ja ein Hilfe Forum und kein beurteilungs Forum. Also würde mich über den Code freuen wenn mir ihn jemand zur Verfügung stellt

Mit freundlichen Grüßen
 
Also das ist ja ein Hilfe Forum
Hier geht es um Hilfe zur Selbsthilfe und nicht darum, für andere die Arbeit zu machen (wobei der Aufwand für die Kommentare hier wesentlich größer ist, als den Code zu schreiben).

Was bedeutet denn die folgende Anforderung?
Bei der jeweiligen Primzahl soll das Programm die Primzahl unter Ihr und über Ihr vergleichen

Das heißt nichts anderes als: ohne Sonderfälle hast Du drei Primzahlen x,y,z mit x < y < z. Für y sollst Du nun vergleichen, ob z-y < y-x gilt.

Du musst also in einer Schleife entsprechend weiterzählen.

Frage: welches sind die Sonderfälle?
 
Zuletzt bearbeitet:
Also wie beschreiben soll das Programm so laufen: Jeweilige Person tippt eine Zahl ein z.b 1000. Dann soll in der Console das stehen

2 : 2 + 3 = 5
3 : 3 + 2 = 5
5 : 5 + 7 = 12
7 : 7 + 5 = 12
11 : 11 + 13 = 24
13 : 13 + 11 = 24
17 : 17 + 19 = 36
19 : 19 + 17 = 36

Also soll an die Stelle des Fragezeichen (* : * + ?) schauen welche Zahl an der Aktuellen Primzahl näher dran liegt. Die Primzahl nach der Aktuellen zahl oder die Primzahl unter der aktuellen zahl. Diese soll er dann ausgeben und mit der aktuellen Primzahl Addieren
 
Java:
//Eingabe
            Scanner eingabe = new Scanner(System.in);
            System.out.println("Bis wie viel soll der merkwüdige Primzahlenzähler Zählen ?");
            int biswieviel = eingabe.nextInt();

           

           

            int n = biswieviel;
            // beginne bei der Zahl 2 da 1 keine Primzahl ist
            for (int i = 2; i <= n; i++) {
                // isPrimzahl ist ein Wahrheitswert, um zu überprüfen ob wir eine
                // Primzahl gefunden haben. falls nicht wird sie später auf false
                // gesetzt.
                boolean isPrimzahl = true;
                // i durch jede Zahl kleiner als i zu teilen und zu überprüfen, ob
                // ein Rest übrig bleibt. BSP. im wiki 25=i und j wäre die Variable
                // die hochgezählt wird
                for (int j = 2; j < i && isPrimzahl; j++) {
                    // Wenn eine division als rest 0 hat dann ist die Zahl keine
                    // Primzahl und somit ist isPrimzahl auf false zu setzten
                    if ((i % j) == 0) {
                        isPrimzahl = false;
                       
                    }
                }
                // gib eine Meldung aus falls es sich um eine Primzahl handelt.
                   
                if (isPrimzahl) {

                        for (int b = 3; b <= n; b++) {
                            boolean issPrimzahl = true;
                            for (int h = 2; h < b && issPrimzahl; h++) {
                                if ((b % h) == 0) {
                                    issPrimzahl = false;

                                }
                            }                                                           
                           
                          System.out.println(i + " : " + i + " + " + b);   


               
        break;
                
}

                    }


                           
           
              }  }    }
 
OK, fangen wir nochmal von vorne an. Schreibe ein Programm, das alle Primzahlen zwischen 4 und 100 (oder 1000) zusammen mit der vorherigen Primzahl ausgibt, also:
5, 3
7, 5
11, 7
...


Also ich könnte es mit Arrays machen, aber die Aufgabenstellung lautet ein wenig anders. Wollte als erstes die nächsten Primzahlen aufzählen, jedoch wird die nächste Primzahl nicht berechnet sondern nur wiederholt. Könnt ihr mir wenigstens dabei helfen? Möchte es gerne mit verschachtelter schleife lösen. Mit Methoden finde ich es schwierig und un übersichtlich
 
Nein, ohne Arrays, ohne extra Methoden. Einfach mit einer Schleife. Hinweis: Du brauchst eine zusätzliche Variable, um Dir die letzte Primzahl zu merken...
 
Mal etwas mehr Hilfe:
Java:
import org.javaforum.mihe7.Prime;

public class Test {
    public static void main(String[] args) {
        int oldPrime = 3;
        for (int i = 4; i <= 100; i++) {
            if (Prime.isPrime(i)) {
                // hier Deine Lösung
            }
        }
    }
}

Die Klasse Prime ist im beigefügten Jar-File enthalten.
 

Anhänge

Mal etwas mehr Hilfe:
Java:
import org.javaforum.mihe7.Prime;

public class Test {
    public static void main(String[] args) {
        int oldPrime = 3;
        for (int i = 4; i <= 100; i++) {
            if (Prime.isPrime(i)) {
                // hier Deine Lösung
            }
        }
    }
}

Die Klasse Prime ist im beigefügten Jar-File enthalten.



Sie haben im Code geschrieben "//Hier deine Lösung" jedoch weiß ich nicht genau was sie damit meinen. Was musst da hin ? Habe alle Codes in den Chat geschrieben gehabt. Seit Anfang erster Seite. Was war eigentlich die Datei ? Also der Code von oben oder was war das ?
 
1. "Sie"?!? Wir sind hier alle per Du.
2. Du sollst Die jar-Datei nicht öffnen sondern einfach nur einbinden.

Auf der Befehlszeile unter Windows übersetzen mit javac -cp .;prime.jar Test.java, ausführen mit java -cp .;prime.jar Test. Unter Linux lediglich das Semikolon durch einen Doppelpunkt ersetzen.

Alternativ kannst Du natürlich auch selbst prüfen, ob die Zahl eine Primzahl ist, dann brauchst Du die jar überhaupt nicht zu verwenden (ich wollte Dir lediglich nicht den Code dafür zeigen ;-))

Zum Beispiel:
Java:
public class Test {
    public static void main(String[] args) {
        int oldPrime = 3;
        for (int i = 4; i <= 100; i++) {
            boolean isPrime;
            // prüfe, ob i Primzahl ist
            // falls ja, setze isPrime = true, sonst isPrime = false
            if (isPrime) {
                // hier Deine Lösung
            }
        }
    }
}

Was musst da hin ?
Dein Code, um die folgende Aufgabe zu lösen:

Schreibe ein Programm, das alle Primzahlen zwischen 4 und 100 (oder 1000) zusammen mit der vorherigen Primzahl ausgibt, also:

Mein Code soll nur etwas Hilfestellung sein, die Aufgabe musst Du schon selbst lösen.
 
Danke für die Hilfe, jedoch bin ich noch ein Anfänger mit dem Programmieren. Kann leider nicht verstehen was du meinst. Alleine schon mit der Datei und Eingabezeile, habe keine Ahnung was sie meinen. Natürlich kann ich sie verstehen das sie wollen das ich selber die Aufgabe löse und selber es lerne jedoch hatte ich mich am Anfang des Themas gesagt gehabt das ich schon seit mehreren Monaten dran sitze. Also würde mich freuen wenn sie mir die Lösung zuschicken würden oder eventuell einen großen Tipp geben. Wie gesagt bin noch ein Anfänger
 

Zurück
Oben