Primzahlen

Status
Nicht offen für weitere Antworten.

stormtide

Mitglied
Wieder mal ein dickes Problem...
Diesmal ist die Aufgabenstellung, alle Primzahlen bis zu einem definierten Wert rauszusuchen.
Im Beispiel ist dieser Wert 10000.
Als Prinzip gilt:
2 Wird zuerst ins Array abgelegt, sozusagen als Basis für alles.
Jede weitere Zahl wird geprüft, ob sie durch irgendeine Zahl im Array teilbar ist.
Ist dies nicht der Fall, ist es eine Primzahl und kommt auch in's Array.
Was habe ich übersehen?

Code:
public class primzahl
{
public static void main(String[] args)
	{
		// Deklaration der Konstanten ANZAHL
		final int ANZAHL=100000;	// Anzahl der zu durchsuchenden Primzahlen
		
		// Definition der Variablen
		int[] prim=new int[ANZAHL];	// Array zur Speicherung der Primzahlen
		int temp;			// Speichert den Rest der Berechnugn als Zwischenwert
		int i;				// Zähler 1
		int j;				// Zähler 2
		
		// 2 als Basis in PRIM[0] schreiben
		prim[0]=2;
		
		// Primzahlen rausfiltern
		for (i=3; i<=ANZAHL; i++) {
			for (j=0; j<=ANZAHL; j++) {
				temp = i % prim[j];
				if (temp == 0) {
				
				}else{
					prim[j+1]=i;
				}
			}
		}
		
		// Ausgabe der Primzahlen
		for (i=0; i<=ANZAHL; i++) {
			System.out.print (prim[i]);
		}
	}
}
 
B

Beni

Gast
falls sqrt( prim[j] ) > i ist, kanns du abbrechen. (Wieso? Selber rätseln :wink: :bae: )
 

stormtide

Mitglied
zeile 20...
ich weiss was du meinst...
aber hast du auch eine idee wie ich mein programm wenigstens so zum laufen bringen kann, dass es die primzahlen bis 10000 sucht?
 

meez

Top Contributor
Warum so kompliziert...?
Hier:

Code:
public class primzahl {	
	public static void main(String[] args) {
		boolean isprim;
		for (int n=2;n<=10000;n++) {
  			isprim = true;
  			for (int i=2;i<n;i++) {
   	 			if ((n % i) == 0) {
       					isprim = false;
       					break;    
    				}  
  			}
   			if (isprim)
     				System.out.println(n);     
		}
	}
}
 

foobar

Top Contributor
Code:
import java.util.*;
import java.util.Vector;
public class Prim
{
	private int amount;
	private Vector prims;
	public Prim(int amount)
	{
		this.amount = amount;
		this.prims = new Vector();
		this.compute();
		this.showOutput();
	}
	
	private void compute()
	{
		for (int i = 2; i < this.amount; i++)
		{
			if (isPrim(i))
			{
				this.prims.add(new Integer(i));
			}
		}
	}
	
	private boolean isPrim(int value)
	{
		for (int i = 2; i < value-1;i++)
		{
			if (value % i == 0) return false; 
		}
		return true;
	}
	
	private void showOutput()
	{
		Iterator it = prims.iterator();
		while (it.hasNext())
		{
			System.out.println(">>" + it.next());
		}
	}
 

stormtide

Mitglied
öhm danke...
aber kannst du mir mal grob sagen, was dein tool genau macht?
verstehe den sinn hinter "ispirim" nicht ganz...
 

meez

Top Contributor
Meinst du meine Var oder foobars Methode?


EDIT: Ich kanns ja mal sagen...
isprim wird auf true gesetzt...soweit klar...Danach wird für die Zahl, welche gerade an der Reihe ist (Zähler n) getestet, ob sie nur durch sich selbst teilbar ist...Wenn nicht, wird isprim auf false gesetzt und die Zahl wird nicht angezeigt.

EDIT2: Manchmal ist es einfacher ein Resultat zu wiederlegen, als zu beweisen, dass es stimmt..
 

foobar

Top Contributor
Meine Methode isPrim macht genau das selbe, wie folgender Code von meez:
Code:
 if ((n % i) == 0) 
{
   isprim=false;
   break;
}
Ein Wert wird durch alle seine Vorgänger modulo Dividiert. Wenn das Ergebnis 0 ist , wird die Methode verlassen, denn es kann keine Primzahl sein. Wird das Ende der For-Schleife erreicht wird true zurück gegeben. Also ist es eine Primzahl.
 

guenni81

Aktives Mitglied
Hier, deins nochmal ein wenig abgeändert...
Code:
public class primzahl
{
	public static void main(String[] args)
   {
	      // Deklaration der Konstanten ANZAHL
	      final int ANZAHL=100;   // Anzahl der zu durchsuchenden Primzahlen
	      
	      // Definition der Variablen
	      int[] prim=new int[ANZAHL];   // Array zur Speicherung der Primzahlen
	      int temp;         // Speichert den Rest der Berechnugn als Zwischenwert
	      int i;            // Zähler 1
	      int j=1;            // Zähler 2
	      int ArrayCounter = 2;
	      int restWert = 0;
	      boolean primzahl = true;
	      
	      prim[0] = 1;
	      prim[1] = 2;
	      prim[2] = 3;
	      
	      // Primzahlen rausfiltern
	      for (i=3; i<=ANZAHL; i++)
	      {
	      	while(j <= ArrayCounter )
	        {
	        	restWert = i % prim[j];
	        	if(restWert >= 1)
	        		primzahl = true;
	        	else
	        	{
	        		primzahl = false;
	        		break;
	        	}
	        	j++;	        	
	        }
	        
	        if(primzahl == true)
	        {
	        	ArrayCounter++;
	        	prim[ArrayCounter] = i;
	        }
	        j = 1;
	      }
      
	      // Ausgabe der Primzahlen
	      for (i=0; i<=ArrayCounter; i++)
		  {
	      	System.out.println("Primzahl: " + prim[i]);
		  }
	   }
	}
 

foobar

Top Contributor
Bitte deklariert eure Variablen immer nur dort, wo ihr sie auch braucht und nicht 20 Zeilen darüber.
Code:
for (int i=0; i<=ArrayCounter; i++)
{
     System.out.println("Primzahl: " + prim[i]);
}
Das macht das ganze viel leichter zu debuggen.
 

meez

Top Contributor
foobar hat gesagt.:
Bitte deklariert eure Variablen immer nur dort, wo ihr sie auch braucht und nicht 20 Zeilen darüber.
Für diesen Satzt hätte dich mein ehemaliger Prof gelyncht...
Das kommt halt noch von Pascal...;)
 

guenni81

Aktives Mitglied
Der Vorteil ist, dass ich alle Variablen am Anfang der Methode anschauen kann und mich nicht erst durch den Quellcode quälen muss um herauszufinden wo die Variable deklariert wurde.
 

stormtide

Mitglied
Zurück zum Thema:
Ich habe meinen Code nun gemäss Beispiel angepasst.
Weiss jetzt echt nicht mehr warum's nicht geht...
Bitte kompiliert mal, vielleicht weiss es ja jemand...
Code:
public class primzahl {
	public static void main(String[] args) {
		
		// Definition der Konstanten Anzahl
		final int ANZAHL=10000;
		
		// Definition der Variablen
		int[] prim = new int[ANZAHL];	// Enthält die Primzahlen
		int i;							// Zähler 1
		int j;							// Zähler 2
		int k;							// Zähler 3
		boolean test;					// Primzahl oder nicht
		
		// 2 als Basis in prim[0] schreiben
		prim[0] = 2;
		
		// Primzahlen suchen
		for (i=3; i<=ANZAHL; i++) {
			test = true;
			for (j=0; j<=ANZAHL; j++) {
				if (i % prim[j] == 0) {
					test = false;
				}
			}
			if (test = true) {
				prim[j+1] = i;
			}
		}
		
		// Ausgabe der im Array gespeicherten Primzahlen
		for (k=0; k<=ANZAHL; k++) {
			System.out.print (prim[k]+", ");
		}
	}
}
Bitte bezieht jetzt alle Statemênts zu diesem Code...
 

foobar

Top Contributor
guenni81 hat gesagt.:
Der Vorteil ist, dass ich alle Variablen am Anfang der Methode anschauen kann und mich nicht erst durch den Quellcode quälen muss um herauszufinden wo die Variable deklariert wurde.
Das mag bei 50 Zeilen vielleicht noch funktionieren, aber wenn du mal ein etwas größeres Programm mit > 1000 Zeilen schreibst, kommst du mit dieser Methode in Teufelsküche. Hast du schon mal was von Scope(Gültigkeitsbereich) gehört? Wähle den Scope deiner Variablen nach der goldenen Regel:
So viel wie nötig, so wenig wie möglich.
 

meez

Top Contributor
Was machst du denn da für ein Durcheinander mit dem Array...
Zudem mach keine Arrays, deren Länge du nicht weisst...Nimm dafür Vectoren...
Hab das Prog mal angepasst, da es so überhaupt nicht gelaufen wär....

Code:
import java.util.*;
public class primzahl {
	public static void main(String[] args) {
		
		// Definition der Konstanten Anzahl
		final int ANZAHL=10000;
		
		// Definition der Variablen
		Vector prim = new Vector();
		int k;							// Zähler 3
		boolean test;					// Primzahl oder nicht
		
				
		// Primzahlen suchen
		for (int i=2; i<=ANZAHL; i++) {
			test = true;
			for (int j=2; j<i; j++) {
				if ((i % j) == 0) {
					test = false;
					break;
				}
			}
			if (test) 
				prim.add(new Integer(i));
			
		}
		
		// Ausgabe der im Array gespeicherten Primzahlen
		for (k=0; k<prim.size(); k++) 
			System.out.print (((Integer) prim.get(n)).intValue() + ", ");
		
	}
}
 

guenni81

Aktives Mitglied
@foobar
Scope habe ich schon vom namen gehört. Wo kann man infos darüber nachlesen???

@stormtide
Hab deinen Code mal kompiliert, beim ausführen knallts dann.
Meiner von den vorherigen Einträgen ging ohne probleme...
 

stormtide

Mitglied
das problem ist ebe diese dass ich keine funktionen verwenden darf, die wir im unterrich noch nicht behandelt haben. so also auch keine vectoren. niemand eine idee? ich bin fast überzeug es ist nur ein kleiner dummer fehler...
 

meez

Top Contributor
Hab mal noch aufgeschrieben, warum dein Beispiel oben nicht läuft...
Die Aenderungen hab ich dir ja schon oben beschrieben...
Code:
    //Du machst einen Array mit 10000 Feldern? Ziemlich sicher ist nicht jede Zahl eine Primzahl  
    int[] prim = new int[ANZAHL]; 
   
      //Du fängst bei 3 an...? Alles ab 1 kann ein Primzahl sein...
      for (i=3; i<=ANZAHL; i++) {
         test = true;
         //Du gehst immer wieder bis ANZAHL...Du willst doch aber nur durch die Zahlen teilen, 
         //welche kleiner sind, als die zu testende Zahl (i)
          for (j=0; j<=ANZAHL; j++) {
            //Warum eine Zahl aus dem Array...? Du willst doch i testen...
             if (i % prim[j] == 0) {
               test = false;
   		//Hier brauchts noch ein break, sonst lässt du das Program zuviel arbeiten...
            }
         }
         if (test = true) {
            prim[j+1] = i;
         }
      }
      //Das geht schonmal nicht, weil der ARRAY ja die Länge Anzahl hat, also Anzahl -1 
      //der höchste index ist...
      for (k=0; k<=ANZAHL; k++) {
         System.out.print (prim[k]+", ");
      }
 

meez

Top Contributor
Ohne Vector:
Version 1:
Code:
public class primzahl {
	public static void main(String[] args) {
		
		// Definition der Konstanten Anzahl
		final int ANZAHL=10000;
		
		// Definition der Variablen
		boolean test;					// Primzahl oder nicht
		// Primzahlen suchen
		for (int i=2; i<=ANZAHL; i++) {
			test = true;
			for (int j=2; j<i; j++) {
				if ((i % j) == 0) {
					test = false;
 					break;
				}
			}
			if (test) 
				System.out.println(i);
			
		}		
	}
}


Oder dann halt wirklich mit einem Array:

Version 2:
Code:
public class primzahl {
	public static void main(String[] args) {
		
		// Definition der Konstanten Anzahl
		final int ANZAHL=10000;
                int[] prim = new int[ANZAHL];
		int c=0;

		// Definition der Variablen
		boolean test;					// Primzahl oder nicht
		// Primzahlen suchen
		for (int i=2; i<=ANZAHL; i++) {
			test = true;
			for (int j=2; j<i; j++) {
				if ((i % j) == 0) {
					test = false;
					break;
				}
			}
			if (test) 
				prim[c++] = i;
			
		}		
                for (int n=0;n<prim.length;n++)
                          System.out.println(prim[n]);
	}
}
 

meez

Top Contributor
foobar hat gesagt.:
Scope => Gültigkeitsbereich einer Variablen

Ich sage ja nichts gegen den Scope (bei z.B. Zählern) ...Aber bei mir kommts halt teilweise wirklich noch von meinen Programmieranfängen mit Pascal...Da weigert sich der Kompiler etwas zu tun, wenn du nicht alles am Anfang deklarierst...;)
 

meez

Top Contributor
War auch noch ein kleiner Fehler drin...

Code:
                for (int n=0;n<c;n++)
                          System.out.println(prim[n]);
 

stormtide

Mitglied
wow! respect...
du glaubst mir gar nicht, wie unendlich dankbar ich dir dafür bin.
du hast etwas gut bei mir (nur glaube ich nicht, dass ich dir jemals gross helfen könnte...)
liebe grüsse und vielen, vielen dank!
 

Reality

Top Contributor
Das erste Beispiel von dir meez finde ich gut, aber das mit den Vectoren ist schlecht, da das wrappen und ent-wrappen ziemlich viel Zeit kostet. Bei zeitaufwendigen Programmen würde ich mir eine Klasse schreiben, die native Variablen aufnehmen kann.

Liebe Grüße
Reality
 

foobar

Top Contributor
@Reality Ich wollte mit meinem Beispiel nur zeigen wie man auf Primzahlen testen kann. Performance spielt dabei im Moment keine Rolle.
 

foobar

Top Contributor
Hier ist das selbe Programm nochmal, diesmal ohne Vector und Wrapperklassen:
Code:
package demos.prim;
public class Prim2
{
	private int amount;
	private PrimitivArrayList prims;
	public Prim2(int amount)
	{
		this.amount = amount;
		this.prims = new PrimitivArrayList();
		this.compute();
		this.prims.printAll();
	}
	
	private void compute()
	{
		for (int i = 2; i < this.amount; i++)
		{
			if (isPrim(i))
			{
				this.prims.add( i );
			}
		}
	}
	
	private boolean isPrim(int value)
	{
		int max = (int)Math.sqrt(value)+1;
		for (int i = 2; i < max;i++)
		{
			if (value % i == 0) return false; 
		}
		return true;
	}
	
	
	public static void main(String[] args)
	{
		new Prim2(100000);
	}
}


class PrimitivArrayList
{
	private ListElement firstElement, lastElement;
	private int amountElements;
	public PrimitivArrayList()
	{
		this.firstElement = new ListElement(0, -1, null);
		this.lastElement = this.firstElement;
	}
	
	private ListElement getElementAt(int index, int currentpos, ListElement element)
	{
		return currentpos == index ? element : getElementAt(index, ++currentpos, element.getNext());
	}
	
	public int get(int index)
	{
		return index >= this.getSize() ? -1 : getElementAt(index, 0, this.firstElement).getValue();
	}
	
	private void print(ListElement element)
	{
		System.out.println(element.getValue());
		ListElement next = element.getNext();
		if (next != null)
		{
			print(next);
		}
	}
	
	public void add(int item)
	{
		if (firstElement.getValue() == -1)
		{
			firstElement.setValue(item);
		}
		else
		{
			ListElement newElement = new ListElement(lastElement.getPosition() + 1, item, null);
			lastElement.setNext(newElement);
			this.lastElement = newElement;
		}
		amountElements++;
	}
	
	public void printAll()
	{
		print( firstElement );
	}
	
	public int getSize()
	{
		return this.amountElements;
	}
	
	private class ListElement
	{
		private int value;
		private ListElement next;
		private int position;
		public ListElement(int position, int value, ListElement next)
		{
			this.position = position;
			this.value = value;
			this.next = next;
		}
		public ListElement getNext()
		{
			return next;
		}
		public int getValue()
		{
			return value;
		}
		public void setNext(ListElement element)
		{
			next = element;
		}
		public void setValue(int i)
		{
			value = i;
		}
		public int getPosition()
		{
			return position;
		}
		public void setPosition(int i)
		{
			position = i;
		}
		public String toString()
		{
			return this.getClass() + " position " + this.getPosition() + " value " + this.getValue();
		}
	}
}
 

R-F-E

Mitglied
kann man in java die Primzahlen auch in eine *.txt schreien lassen..

in dem DOS-Fenster kann man die ja so nicht verwenden..

so wie unter Pascal: http://pascal.philipp-bruck.de/primtext/primtext.txt (< ich weiß, dass hier SEHR viel schnickschnack mit bei ist)

P.S.: wie kann ich in Java sowas wie functionen/proceduren (sowie pascal) deklarieren? (sind das die Klassen)
das geht doch bestimmt in Java, oder?
 

Wildcard

Top Contributor
Klar kann man. Einfach mit einem Writer in die Datei schreiben.
Äquivalent zu function/procedure sind Methoden.

Code:
public void fooBar(int blupp)
{
     while(nobodyCares())
     {
          wasteTime(blupp);
     }
}

Klassen sind 'Schablonen' für Objekte. Das ist 'mehr' als eine procedure/function/method
 

R-F-E

Mitglied
zu der text:

Einfach mit einem Writer in die Datei schreiben.

ne für einen anfänger is das überhaupt nich einfach...
was heißt "writer" unter java?
und wie sähe das im quelltext aus?

zu den proceduren:
"public void" steht immer am anfang
dann name mit (parameter in klammern)
dann befehle..
soweit so klar

wie rufe ich die auf?
so:
Code:
foobar(5);
:?:

und wie mache ich das bei functionen, die eine rückgabe haben sollen?
 

Sky

Top Contributor
R-F-E hat gesagt.:
und wie mache ich das bei functionen, die eine rückgabe haben sollen?

public <RückgabeTyp>

Code:
z.b. public int getCountOfProblems()
public String getName(String vorname)

Aufruf:

Code:
int i = getCountOfProblems();
String s = getName("Fritz");
 

R-F-E

Mitglied
noch ne lösung für die primzahlen:
Code:
// Primzahl Programm übertragen von Pascal
//Pascal Programm programmiert von: Philipp B. (dankeschön :) )
//Datei: Prim.java

public class prim {
    int nummer;

    static boolean primtest(int zahl){
           int o = 3,r = 1;
           if (((zahl % 2) == 0) &&(zahl != 2)) r++;
           do {
              if (((zahl % o) == 0) &&(zahl != o)) r++;
              o = o+2;
           }
           while (!(o>(zahl/2 + 1) || r>1));
           if (r==1)return true;
           else return false;
    }
    
    /*public int zahlen(int maxi){
      int i,u = 0;

    }*/

    public static void main(String[] args) {
           int max = 2000;
             for ( int i = 2; i<=max; i++ ) {
               if (primtest(i)) System.out.print(i +" ");
             }
           }
}

aber ich finde nirgendwo infos, wie ich das jetzt in eine *.txt datei schreiben kann...
 

ven000m

Bekanntes Mitglied
Hallo,

ich habe ein sehr einfaches und schlankes Programm geschrieben, dass die Primzahlen bis zu einer eingegebenen Zahl berechnet.

Wer es noch kompakter hinbekommt, der soll auf diesen Post antworten. :applaus:

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

	/*
						 * 
						 * (c) ven000m 21:38:25 11.06.2005
						 *  
						 *  
						 *  
						 *	
						 *	Datei: Teilerberechner.java
						 *	Enthalten im Projekt: Objekte 
						 *
						 */


public class Primzahl
{
	
	
	public static void main (String args[]) throws IOException
	{
		BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.println("Bis wohin sollen Primzahlen errechnet werden?");
		int hoechstgrenze=Integer.parseInt(din.readLine());
		
		boolean teilbar=false;
		
		for(int i=1;i<hoechstgrenze;i++)
		{
			for(int g=2;g<i;g++) {
			if((i%g)==0)
			teilbar=true; }
			
			if(teilbar==false)
			System.out.print(+i+",");			
			teilbar=false; 	
	
		
		
  	}	
	
}
 
G

Guest

Gast
ven000m hat gesagt.:
Wer es noch kompakter hinbekommt, der soll auf diesen Post antworten. :applaus:

Code:
public class Primzahl {
    public static void main(String[] args) throws Exception {
        int hoechstgrenze = Integer.parseInt(args[0]);
        for (int i = 2; i < hoechstgrenze; i++) {
            int r = (int) Math.sqrt(i) + 1;
            for (int g = 2; g <= r; g++) {
                if ((i % g) == 0) {
                    System.out.println(i + ", ");
                    break;
                }
            }
        }
    }
}
 

ven000m

Bekanntes Mitglied
Hallo,

naja 7 Zeilen genau wie mein Programm.

Enger schreiben != kompakter. Aber verständlicher find ich es nicht mit der SquareRoot.
 
G

Guest

Gast
ven000m hat gesagt.:
Aber verständlicher find ich es nicht mit der SquareRoot.
Egal. Wenn man das nicht versteht, sollte man eh lieber bei McDonald's arbeiten. Ein wenig Optimierung muss einfach sein.
 

ven000m

Bekanntes Mitglied
lol Laberbacke, toller Vergleich :noe: .

Du hast wahnsinnig optimiert 97% deines Codes sind bei mir schon ausgeschrieben. Wie gesagt, enger schreiben != kompakter. Aber halt dich daran nicht auf, er ist nicht soviel anders kleiner.
 
G

Guest

Gast
ven000m hat gesagt.:
lol Laberbacke, toller Vergleich :noe: .

Du hast wahnsinnig optimiert 97% deines Codes sind bei mir schon ausgeschrieben. Wie gesagt, enger schreiben != kompakter. Aber halt dich daran nicht auf, er ist nicht soviel anders kleiner.

1. bin ich nicht klein (1,90m)
2. hat dein Code mehr als 7 Zeilen
3. ja, er ist relativ zu deinem wahnsinnig optimiert, weil du auch in der inneren Schleife trotz Primzahlfund immer weiter testest. Und dann kommt noch die Sache mit der Quadratwurzel.

6, setzen!
 

ven000m

Bekanntes Mitglied
Trotz Primzahlfund immer weiter testest?

Meinst du das:
Code:
if((i%g)==0) 
         teilbar=true; }

Eine Primzahl kann man nicht "finden" höchstens berechnen, indem du alle Teiler berechnest und wenn dann eine Zahl nicht mehr teilbar ist, dann ist das die Primzahl.

Deshalb muss man immer alle Zahlen durchgehen. Ich glaube du verstehst meine Bool Variablen falsch. Jetzt komm nicht mit "break" dann hätte ich wieder eine Zeile mehr. Du hast höchstens 1 Zeile weniger vom Core Code.

Ich habe übrigens 7 Zeilen, für deine 6 bleib mal ganz locker kleiner.


Code:
for(int g=2;g<i;g++) {
			if((i%g)==0)
			teilbar=true; break; }
			
			if(teilbar==false)
			System.out.print(+i+",");			
			teilbar=false;
 

Wildcard

Top Contributor
Anstatt sich hier zu streiten wessen Code eine Zeile kürzer ist (was mit Nichten für guten Code spricht, sondern meistens auf das Gegenteil hindeutet) solltet ihr lieber mal am Algorithmus arbeiten. Warum gerade Zahlen testen, nur bis zur Wurzel der Zahl testen usw.
Wenn man Primzahlen bis zu einer Oberschranke berrechnet ist sogar der simple Sieb der Eratosthenes wesentlich geeigneter als hier mit Brute-Force ran zu gehen. :meld:
Insofern ist IMHO keiner von euch beiden in der Position hier einen Streit vom Zaun zu brechen.
ntc.gif
 

R-F-E

Mitglied
Wildcard hat gesagt.:
Anstatt sich hier zu streiten wessen Code eine Zeile kürzer ist (was mit Nichten für guten Code spricht, sondern meistens auf das Gegenteil hindeutet) solltet ihr lieber mal am Algorithmus arbeiten.

sehe ich auch so...
oder ihr könntet mir helfen, wie ich die Primzahlen in eine *.txt datei schreiben kann...

das trägt zwar nicht unbedingt dem algorithmus bei, aber es ist benutzerfreundlicher...
denn wenn ich mit den primzahlen von 2-2000 brauche, um mit denen weiterzurechnen hilft es mir reichlich wenig die im DOS-Fenster zu sehen...
 

Wildcard

Top Contributor
Wenn du mit denen nur weiterrechnen willst währe es Blödsinn sie in eine Datei zu schreiben :bahnhof:
 

messi

Bekanntes Mitglied
Code:
try {
    Writer writer = new OutputStreamWriter(new FileOutputStream("primzahlen.txt"));
    for (int i = 2; i <= 2000; i++) {
        if (isPrim(i)) {
            writer.write(Integer.toString(i));
            writer.write("\r\n");
        }
    }
    writer.close();
} catch (IOException e) {
    e.printStackTrace(System.err);
}

Setzt voraus, daß es eine Methode boolean isPrim(int) gibt.
 

R-F-E

Mitglied
Wildcard hat gesagt.:
Wenn du mit denen nur weiterrechnen willst währe es Blödsinn sie in eine Datei zu schreiben :bahnhof:

jaa du hast ja recht...

aber halt zum weiterverwenden...
z.B. wenn ich die Liste brauche...
ich kann ja nich die Primzahlen von 2-2000 aus dem Dos-Fenster abschrieben...

zum weiterverwenden wäre eine array das beste, oder?

auf jeden fall: danke
 

messi

Bekanntes Mitglied
R-F-E hat gesagt.:
zum weiterverwenden wäre eine array das beste, oder?
Klar! Den kannst du auch gleich beim Primzahltest verwenden. Dann prüfst du nicht jeden Teiler, sondern nur die Primteiler. Am Ende schreibst du das Array in eine Datei und beim nächsten Start liest du diese wieder ein. Bei kleiner Primzahlmenge lohnt sich das aber nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
B Primzahlen bis 100 addieren Java Basics - Anfänger-Themen 16
H Primzahlen finden - Zeit optimieren Java Basics - Anfänger-Themen 34
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
P Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 Java Basics - Anfänger-Themen 8
Java The Hutt Primzahlen - die ersten 100 Java Basics - Anfänger-Themen 17
N Erste Schritte Primzahlen-ArrayIndexOutOfBounds Java Basics - Anfänger-Themen 23
R Primzahlen Zähler Programm / Benachbarte Primzahlen Java Basics - Anfänger-Themen 30
D Klassen Primzahlen überprüfen Java Basics - Anfänger-Themen 3
I Primzahlen Java Basics - Anfänger-Themen 17
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
R primzahlen im array Java Basics - Anfänger-Themen 33
M Primzahlen, nur jede 2te ausgeben Java Basics - Anfänger-Themen 11
T Primzahlen Fehler Java Basics - Anfänger-Themen 4
K Primzahlen Java Basics - Anfänger-Themen 6
L Primzahlen im Array ausgeben Java Basics - Anfänger-Themen 3
P Primzahlen Java Basics - Anfänger-Themen 3
A Methoden Primzahlen erstellen von 1 bis 100-Codeprobleme Java Basics - Anfänger-Themen 2
H Variablenverfolgung - Primzahlen Java Basics - Anfänger-Themen 7
G Primzahlen Java Basics - Anfänger-Themen 6
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
S Primzahlen bis 1000 ausgeben Java Basics - Anfänger-Themen 3
K Methoden Primzahlen Java Basics - Anfänger-Themen 33
S Input/Output Primzahlen Datenbank Java Basics - Anfänger-Themen 11
F Primzahlen in Zahlenblöcken ausgeben Java Basics - Anfänger-Themen 9
M Primzahlen - es werden alle Nicht-Primzahlen ausgegeben Java Basics - Anfänger-Themen 5
M primzahlen Java Basics - Anfänger-Themen 4
S Programm zu Ermittlung von Primzahlen Java Basics - Anfänger-Themen 14
E Programm zum Primzahlen ausgeben-Fehler Java Basics - Anfänger-Themen 12
X Primzahlen Java Basics - Anfänger-Themen 7
S Primzahlen Java Basics - Anfänger-Themen 12
B Programmierobjekt - Primzahlen Java Basics - Anfänger-Themen 2
D Primzahlen ausgeben. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
N Primzahlen Java Basics - Anfänger-Themen 5
I Primzahlen check, String prüfen lassen. Java Basics - Anfänger-Themen 6
A OOP Programm zum bestimmen von Primzahlen, OutofBoundsException Java Basics - Anfänger-Themen 10
apple987123 Primzahlen Java Basics - Anfänger-Themen 12
A Primzahlen: ein paar offene Fragen Java Basics - Anfänger-Themen 2
T Primzahlen Java Basics - Anfänger-Themen 6
G Primzahlen Java Basics - Anfänger-Themen 18
B Primzahlen berechnen - Wieso unterschiedliche Java Basics - Anfänger-Themen 3
B Primzahlen Algorithmus - wo ist der Fehler ? Java Basics - Anfänger-Themen 2
E Primzahlen Java Basics - Anfänger-Themen 5
B Primzahlen mit Array errechnen! Java Basics - Anfänger-Themen 13
H Miller Rabin Test Primzahlen werden teilweise nicht gefunden Java Basics - Anfänger-Themen 5
M Wer kann mir bei Primzahlen helfen ? Java Basics - Anfänger-Themen 4
G Frage zur Primzahlen berechnung Java Basics - Anfänger-Themen 11
kulturfenster Primzahlen berechnen Java Basics - Anfänger-Themen 11
D Primzahlen Java Basics - Anfänger-Themen 4
N Zerlegung in Primzahlen Java Basics - Anfänger-Themen 7
F Programm Primzahlen Java Basics - Anfänger-Themen 5
J Primzahlen errechnen.ArrayLists abgleichen Java Basics - Anfänger-Themen 2
M Primzahlen Java Basics - Anfänger-Themen 6
C Primzahlen Java Basics - Anfänger-Themen 7
C Primzahlen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben