Hallo liebe Java-Programmierer,
Ich muss für meine Abiturpräsentation den Sieb des Eratosthenes vorstellen. Jedoch scheitert bei mir der Code ab ca. 93000 ( als Grenze). Nun ist es zwa rnciht wichtig ob ich bis 1. Million zählen lasse oder bis 30 Millionen, doch ist es für mich von persönlicher Interesse rauszufinden, wie ich über meine nicht überschreitbare Grenze komme.
Ich verwende ein Boolean und allgemein überall Integers. Ich weiß das es daran liegen muss warum ich nicht weiterkomme, da ich an einer Stelle (n = die Grenze) n potenziere. Aber ein Array kann man ohne Integer ja auch nicht benutzen.
Hier der Code. Ich hoffe ihr könnt mir helfen.
Ich muss für meine Abiturpräsentation den Sieb des Eratosthenes vorstellen. Jedoch scheitert bei mir der Code ab ca. 93000 ( als Grenze). Nun ist es zwa rnciht wichtig ob ich bis 1. Million zählen lasse oder bis 30 Millionen, doch ist es für mich von persönlicher Interesse rauszufinden, wie ich über meine nicht überschreitbare Grenze komme.
Ich verwende ein Boolean und allgemein überall Integers. Ich weiß das es daran liegen muss warum ich nicht weiterkomme, da ich an einer Stelle (n = die Grenze) n potenziere. Aber ein Array kann man ohne Integer ja auch nicht benutzen.
Hier der Code. Ich hoffe ihr könnt mir helfen.
Java:
import java.io.*;
public class Erasto {
public void sieb(int n_grenze)
{
int n = n_grenze; // Grenze festlegen
boolean gestrichen[] = new boolean[n+1]; //Array mit n-Elementen erstellen
for(int i = 2; i < n; i++)
gestrichen[i] = false;
for(int i = 2; i < n/2; i++)
{
for(int j = 2; j < n/2 ; j++)
{
if(i*j < n)
gestrichen[i*j] = true;
}
}
String s = "1, \n";
for(int i = 2; i < n; i++)
{
if(gestrichen[i] == false)
s += i + ", \n";
}
System.out.println(s);
}
public static void main(String[] args)
{
Erasto t = new Erasto();
t.sieb(92500);
}
}
Zuletzt bearbeitet von einem Moderator: