Das Primes Prog raubt mir meinen letzten nerv

xunnamedx

Mitglied
Hi
Ich habe ein Problem Mit meinem Primes Prog und zwar denkt es anscheinend boolean isPrime ist immer true ich habe bereits alle möglichen Ursachen Idiotensicher gemacht aber ich finde den Fehler nicht java Primes 10 20 Ausgabe:11 12 13 14 15 16 17 18 19.
Ich bitte euch das mal anzuschauen sollte ja nicht allzu schwer sein
 

Anhänge

Wollte noch dazu sagen dass ich das Prog wohl ziemlich verstümmelt habe Ausgabe untere_grenze anstatt toProof zB habe schon so ziemlich alles probiert ich kann keinen fehler erkennen. Ich hoffe es kann mir jemand helfen
Danke im voraus
 
:) wie schon gesagt sieht alles ein bischen komisch aus sie soll einfach nur den zahlenintervall durchrattern die zweite ist fürs prüfen der einzelnen Zahlen zuständig Ursprünglich war in der ersten vor dem ersten Semikolon ein zaehler eingebaut
 
was hälste hiervon:

Code:
public boolean primtest(int n){
    
    	for (teiler=2;teiler*teiler <= n; teiler++)
    	{
    		if(n % teiler == 0){
    		  // keine Primzahl
    		 return true;
    	   else {
    			return false;
    		}
    	}
    	// keinen Teiler gefunden, also Primzahl
    	return true;
    }
Code:
    for(x=untere_grenze;x<=obere_grenze;x++){
    	if (primtest(x)){
    		...
    }
    	else {
    		...
    }
    }

Weiß jetzt aber nich genau, ob's ... ;-)
 
Zuletzt bearbeitet:
Sieht gut aus die Optimierung teiler*teiler hat ich auch drin bzw wurzel toProof :) zunächst mal bin ich ein Neuling und mit OOP hab ich mich bis jetzt noch nicht groß beschäftigt also ich suche kein anderes Prog sondern den Fehler in meinem Prog ich kann ihn einfach nicht finden trozdem dank ich dir schonmal
 
Danke für deine Antwort ich habe es mal ausprobiert also ich habe sie jezz ma in dem zweiten schleifenkopf definiert und geht leider immernoch nicht
 
e voila:

Code:
class Primes {
   public static void main (String[] args) {
 	int teiler = 2;
 	int untere_grenze = 1;//Integer.parseInt(args[0]);
 	int obere_grenze = 20;//Integer.parseInt(args[1]);
 	int toProof;
 	boolean isPrime = false;
 
 
 	  for(toProof = untere_grenze; toProof < obere_grenze + 1; toProof++) {
 	  
 		for(teiler = 2; teiler < toProof; teiler++) {
 				    //if (toProof % teiler == 0) {
 					  // isPrime = false;
 					   //break;
 					   //} else {
 						   if(toProof % teiler != 0) {
 								 isPrime = true;
 						   } else {
 								  isPrime = false;
 								  break;
 						   }
 					  //}
 
 
 
 		  }
 		  if(isPrime == true)
 		  System.out.println(toProof);
 		  isPrime = false;
 	  }
 
   }
 }

bissel Variablen umstellen und unnötiges entfernen und schon geht's. ist getestet.
 
Zurück