Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich versuche derzeit ein kleines Programm mit Blue J zu schreiben. Es lässt sich soweit auch Compalieren, das problem ist nur, das es noch einen Logischen Fehler haben muss, den ich leider nicht finden kann. Wer einen Moment Zeit hat schaut euch das doch bitte mal an, bin für jede Hilfe dankbar.
[JAVA=42]
public class Primzahl
{
void tester(int n){
int eingang = n;
int teiler = 2; /* 1 und die Zahl selbst */
int count ; /* Zaehlt die Durchlaeufe */
int endcount = 0;
/*
* Startet bei 2, da 1 als Teiler nicht mitgezaehlt werden soll.
* Solange, bis count < input - 1 ist, da die Zahl selbst als Teiler
* auch nicht mitgezaehlt werden soll.
* Die Schleife läuft nur bis input - 1, da alle Zahlen die groesser als
* input sind nicht als Teiler in Frage kommen, da diese durch input
* nicht glatt teilbar sind.
*/
for (eingang = n; eingang >= endcount ; eingang-- ) /* herunterzaehlen von eingang bis 1 */
{
for ( count = 2; count < eingang - 1; count++ )
{
/* Die Zahl ist glatt teilbar */
if ( eingang % count == 0 )
teiler++; /* Anzahl der Teiler um eins erhoehen */
}
/* Die Zahl hat mehr als 2 Teiler und ist daher keine Primzahl */
if ( teiler > 2)
System.out.println("Die Zahl " + eingang + " ist keine Primzahl!");
/* Die Zahl hat 2 Teiler ( 1 und sich selbst ) und ist daher eine Primzahl */
else
System.out.println("Die Zahl " + eingang + " ist eine Primzahl!");
}
}
}
[/code]
Vielen dank!
hat mir sehr weiter geholfen, wär das hier Facebook,würde ich jetzt "Gefällt mir" klicken.
Allerdings musste ich den Teiler =2 setzten, damit er wie ich am Anfang festgelegt habe 0 und 1 ignoriert und gleich bei 2 anfängt durch den Count=2 somit funktionert das ganz.
Für alle die interesse daran haben, hier die Funktionsfähige Version:
[JAVA=42]
public class Primzahl
{
void tester(int n){
int eingang = n;
int teiler = 2; /* 1 und die Zahl selbst */
int count ; /* Zaehlt die Durchlaeufe */
int endcount = 0;
/*
* Startet bei 2, da 1 als Teiler nicht mitgezaehlt werden soll.
* Solange, bis count < input - 1 ist, da die Zahl selbst als Teiler
* auch nicht mitgezaehlt werden soll.
* Die Schleife läuft nur bis input - 1, da alle Zahlen die groesser als
* input sind nicht als Teiler in Frage kommen, da diese durch input
* nicht glatt teilbar sind.
*/
for (eingang = n; eingang >= endcount ; eingang-- ) /* herunterzaehlen von eingang bis 1 */
{
teiler = 2;
for ( count = 2; count < eingang - 1; count++ )
{
/* Die Zahl ist glatt teilbar */
if ( eingang % count == 0 )
teiler++; /* Anzahl der Teiler um eins erhoehen */
}
/* Die Zahl hat mehr als 2 Teiler und ist daher keine Primzahl */
if ( teiler <= 2)
System.out.println("Die Zahl " + eingang + " ist eine Primzahl!");
/* Die Zahl hat 2 Teiler ( 1 und sich selbst ) und ist daher eine Primzahl */
//else
//System.out.println("Die Zahl " + eingang + " ist eine Primzahl!");
}
}
}
Sehr, sehr, sehr umständlich. Mal zusammengestrichen:
Java:
public class Primzahl {
void tester(int n) {
for (int eingang = n; eingang > 1; eingang--) {
boolean isPrime = true; //Unschuldsvermutung - wir gehen von einer Primzahl aus
for (int teiler = 2; teiler < eingang; teiler++) {
if (eingang % teiler == 0) { //Zahl ist nicht Prim
isPrime = false;
break;
}
}
if (isPrime) {
System.out.println("Die Zahl " + eingang + " ist eine Primzahl!");
}
}
}
}
Das kann natürlich noch verbessert werden, z.B. braucht man nur bis zur Quadratwurzel von eingang zu testen, und auch nur die ungeraden Zahlen und 2 als Teiler.