Hallo,
ich bin gerade dabei auf Codewars einige Übungsaufgaben zu bearbeiten. Die letzte Aufgabe bestand darin, eine Methode zu schreiben, die zwei Grenzwerte entgegennimmt und ermittelt, welches das erste Paar an Primzahlen innerhalb des durch diese Grenzwerte bestimmten Intervalls ist, dass eine als Parameter übergebene Primzahllücke aufweist.
Zum Beispiel soll die Methode gap(2, 3, 50) das Array [3,5] ausgeben, da [3,5], das erste Primzahlpaar zwischen 3 und 50 ist, dessen Differenz zwischen der größeren und der kleineren Primzahl 2 ist.
Ich habe nun folgendes Programm entwickelt:
Dieses Programm funktioniert, wie ich durch Tests festgestellt habe. Allerdings kann ich es auf codewars nicht hochladen, da mir angezeigt wird, dass die Programmlaufzeit mit 16000ms zu lang ist.
Ich wäre deshalb sehr dankbar, wenn mir jemand einen Hinweis gibt, wie sich dieses Programm beschleunigen lässt.
ich bin gerade dabei auf Codewars einige Übungsaufgaben zu bearbeiten. Die letzte Aufgabe bestand darin, eine Methode zu schreiben, die zwei Grenzwerte entgegennimmt und ermittelt, welches das erste Paar an Primzahlen innerhalb des durch diese Grenzwerte bestimmten Intervalls ist, dass eine als Parameter übergebene Primzahllücke aufweist.
Zum Beispiel soll die Methode gap(2, 3, 50) das Array [3,5] ausgeben, da [3,5], das erste Primzahlpaar zwischen 3 und 50 ist, dessen Differenz zwischen der größeren und der kleineren Primzahl 2 ist.
Ich habe nun folgendes Programm entwickelt:
Java:
public static long[] gap(int g, long m, long n) {
long[] result = new long[2];
long[] numbers = new long[(int) (n - m + 1)];
long[] prims = new long[numbers.length];
int prim = 0;
boolean primnumber = true;
for (int i = 0; i < numbers.length; i++, m++) {
numbers[i] = m;
}
for (int i = 0; i < numbers.length; i++) {
for (int j = 2; j <= numbers[i] / 2; j++) {
if (numbers[i] == 2 || numbers[i] % j == 0) {
primnumber=false;
}
}
if (primnumber) {
prims[prim] = numbers[i];
prim++;
}
primnumber=true;
}
for (int i = 1;i<prims.length;i++)
{
if (prims[i] - prims[i - 1] == g) {
result[0] = prims[i - 1];
result[1] = prims[i];
return result;
}
}
return null;
}
Dieses Programm funktioniert, wie ich durch Tests festgestellt habe. Allerdings kann ich es auf codewars nicht hochladen, da mir angezeigt wird, dass die Programmlaufzeit mit 16000ms zu lang ist.
Ich wäre deshalb sehr dankbar, wenn mir jemand einen Hinweis gibt, wie sich dieses Programm beschleunigen lässt.