Hilfestellung bei einer Aufgabe

PatrickM

Neues Mitglied
Hey Leute,

Ich bin relativ neu im Geschäft der Programmierung.

Wir haben in der Schule ein wenig im 3. Semester meiner Oberstufe auf dem Gymnasium mit Softwareentwicklung spezifisch mit Java hantiert. Da ich nach meinem Abitur eine Ausbildung als Anwendungsentwickler starten möchte, habe ich selbstverständlich einige Bewerbungen abgeschickt und auch zurückerhalten. Da meine letzte Stunde mit Java schon etwas länger her ist und ich bedingt nicht mehr alles im Kopf habe, habe ich jedoch schon eine Aufgabe eines Unternehmens erhalten, die ich zu lösen habe. Bei dieser handelt es sich um Folgende:

Es ist ein Programm zu schreiben, das zu einer eingegebenen Zahl die nächstgrößere Primzahl berechnet und ausgibt. Beispiel: Eingabe 14, Ausgabe 17.

Natürlich habe ich schon versucht, mir einzelne Schritte aufzuschreiben, bin aber letztendlich noch auf keine Gesamtlösung gekommen. Diese findet Ihr im Anhang.

Ich hoffe, dass Ihr mir helfen könnt und wäre euch somit sehr verbunden. 🙂

MfG Patrick
 

Anhänge

Hey, weil das ja ziemlich wichtig zu sein scheint für deine mögliche Ausbildung gebe ich dir mal eine beispielhafte Lösung:
Java:
import java.util.Scanner;

public class Testprogramm {
    public static void main(String[] args) {
        //Zahl einlesen
        Scanner s = new Scanner(System.in);
        int number = s.nextInt();
        s.close();
     
        //Inkrementiere 'number' so oft, bis eine Primzahl gefunden wurde.
        do {
            number++;
        } while (!isPrime(number));
     
        //Gebe gefundene Primzahl aus
        System.out.println(number);
    }

    /**
     * Prüft ob übergebe Zahl eine Primzahl ist
     * @param number Zu überprüfende Zahl
     * @return true für den Fall das number eine Primzahl ist, ansonsten false
     */
    public static boolean isPrime(int number) {
        if (number < 2) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
}

Der Algorithmus gibt immer die nächste höhere Primzahl aus! Wenn du also 17 eingibst was selbst eine Primzahl ist wird tdz. die höhere berechnet. Ich denke der Code ist relativ verständlich. Bei so welchen Sachen ist es hilfreich eine Methode zu haben die überprüft ob eine konkrete Zahl eine Primzahl ist. Die Methode kann man dann in einer Schleife aufrufen um die nächst höhere Primzahl zu finden.

Viel Glück noch bei deiner Bewerbung!
 
Hey, vielen Dank für die schnelle Antwort! Werde mir das alles in Ruhe anschauen und verstehen. 😀
Hätte nie gedacht, dass das so schnell geht, danke! 🙂
 
Also ich würde Dir an dieser Stelle empfehlen, dich intensiver mit der Thematik zu beschäftigen. Eine Lösung ist damit gefunden und die ist auch erst einmal ok. Aber was für Optimierungen gibt es hier evtl. noch?
Das könnte wichtig sein, falls Du erwartest, dass da ein Gespräch zu stattfinden könnte.

Optimierungen können vielschichtig sein:
- Strukturierungen (isPrime in eigene Math Klasse zur besseren Wiederverwendung z.B. oder eben Clean Code allgemein.)
- Verbesserung des Algorithmus. Ist da evtl. etwas optimierbar?
- Was für Möglichkeiten bezüglich Primzahlen gibt es evtl. noch? (Bei ähnlichen Anforderungen sind evtl. etwas andere Algorithmen denkbar).

Für ein Gespräch könnte es sinnvoll sein, z.B. eine Recherche zum Thema Primzahlen gemacht zu haben, um da dann in Gesprächen mehr erzählen zu können.

Aber das meiste ist natürlich nur wichtig, wenn es diesbezüglich ein Gespräch geben kann. Gerade die Recherche zur Lösungsfindung wäre mir sehr wichtig. Ob du nun Java gut kannst oder nicht, ist egal. Wenn Du Dich 40h / Woche mit Java beschäftigst, dann hast Du da schnell mögliche Lücken geschlossen. Aber selbständiges Arbeiten, Recherche zur Lösungsfindung, .... das sind Dinge, die sehr wichtig wäre in meinen Augen bei Personalgesprächen.

Speziell bei dem Algorithmus: Ich würde die 2 prüfen und dann eine Schleife ab 3 mit i=i+2 zur Erhöhung. Dann habe ich schon die Hälfte der Checks weniger. Und das lässt sich evtl. noch weiter optimieren. Wenn diese Checks extrem oft vorkommen, dann ist evtl. eine Art Cache sinnvoll. Oder die Speicherung aller Primzahlen um dann bei Checks nur noch Primzahlen prüfen zu müssen. Für einmalige Checks Unsinn, aber für ein System, dass viele Anfragen bekommt evtl. wichtig. Aber ich habe jetzt auch keine Recherche gemacht - evtl. hat da der eine oder andere Mathematiker noch mehr parat.

Das nur so als kleine Info von meiner Seite in der Hoffnung, dass es Dir etwas hilft. Viel Erfolg bei den Bewerbungen und den Gesprächen. (Und wenne s klappt: Viel Spass im Beruf!)
 

Neue Themen


Zurück
Oben