wo liegt der fehler im programm?

  • Themenstarter Themenstarter Anfänger
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

Anfänger

Gast
Hallo,

was muss ich machen damit mein Programm läuft?? Ich wollte eigentlich die Anzahl der Primzahlen und der nicht Primzahlen von 1 bzw. 2 bis 100 anzeigen lassen. Nur irgendwie will es nicht so recht funktionieren! Kann mir da wer weiterhelfen??? Hier ist mein Code:
Code:
public class primzahlen {

  public static void main (String[] args) {
  
  int wert=100;
  int i=2;
  
   for(i=2;i<wert;i=i+1)

  System.out.println(primzahl(i)+" ist eine Primzahl");

  }

  public static int primzahl(int zahl){
    
   int wert1;
   int wert2;
   
   wert1=zahl%zahl;
   wert2=zahl%1;
   
   if(wert1==0 && wert2==0);
   
   else{
     System.out.println(" keine Primzahl");
   }

   return wert1 + wert2;
   
  }
}

Danke schön...
 
sehe ich das richt, du willst in der main methode, ein methode erstellen??? *klammernzähl*

jo würd ich sagen
also erst die main methode schliessen, dann das primzahl teil (warum static? brauchste nicht)
 
Ja, ich steig da irgendwie nicht richtig durch! Wie müsste es denn richtig aussehen?? Ich weiß nicht wie man es korrekt schreibt!! Das ist ja das Problem! Kann vielleicht jemand seinen Lösungsvorschlag posten, vielleicht verstehe ich es ja dann! Danke!
 
@Nobody:
Nein die Klammern sind korrekt :wink:

Aber der Algorithmus ist leider komplett falsch. Wenn man ihn laufen lässt wird 100mal:

0 ist eine Primzahl

ausgegeben.

Code:
wert1 = zahl % zahl;
wert2 = zahl % 1;
if (wert1 == 0 && wert2 == 0)

Dieser Test bringt leider gar nichts, da dies für jede beliebige Zahl gilt. Um Primzahlen zu ermitteln musst du eben zeigen, dass dies die einzige Möglichkeit ist.

Wenn ich mich nicht irre wurde das primzahlen problem hier schon öfters diskutiert !

Man müsste einfach mal die Suche betätigen:

http://www.java-forum.org/de/topics/viewtopic.php?t=719&highlight=primzahl
 
Um Primzahlen zu ermitteln musst du eben zeigen, dass dies die einzige Möglichkeit ist.

Was meinst du damit??? Es muss doch irgendwie eine Möglichkeit geben die Zahlen von 1 bis 100 zu bestimmen! ich meine man kann sie ja auch ausrechnen! 2,3,5,7,11,13 sind ja primzahlen, aber wie kann ich es dem programm sagen?? Danke
 
also, ich hab es jetzt zwar, funktioniert auch halbwegs, ABER was muss ich machen wenn ich die primzahlen und die nichtprimzahlen ausgeben will?? Und wenn ich den wert auf 1000 setze stimmt das ergebnis nicht mehr! Also ich bin am verzweifeln! Die Formel verstehe ich da irgendwie nicht! Helft mir bitte! Ich weiß, das diese lösung falsch ist und nicht richtig funktioniert, aber ich weiß auch nicht mehr weiter. Kann nicht jemand so freundlich sein und den korrekten quellcode schreiben und posten?? Hier ist mein (falscher code) 🙂 :

Code:
public class primzahltest {

  public static void main (String[] args) {

  int wert=1000;
  
  System.out.println("Von 1 bis "+wert+" sind:");
  System.out.println(filter(wert));
  

  }

  public static int filter(int wert){

   int primzahl=0;
   int keineprimzahl=0;
   int summe=0;
   int i=2;
   
   for(i=2;i<wert;i=i+1){
   
   if(i%2==0 || i%3==0 || i%5==0 || i%7==0){
     keineprimzahl=keineprimzahl+1;
   }
   }

   keineprimzahl=keineprimzahl-1;
   summe=wert-keineprimzahl;
   primzahl=primzahl+summe;

   return primzahl;
  }


Helft einen kleinen Noob der nicht mehr weiterweiß! Danke im Vorraus!

Gruß
 
ähm
wenn du alle primzahlen und alle nicht-prinzahlen ausgeben willst, dann solltest dus erstmal mit System.out.println(); versuchen ???:L
denn im moment gibst du nur die anzahl der primzahlen uas, bzw. würdest du, wenn dein code richtig wäre

edit: oder so ähnlich ???:L .. deinen code versteh einer 😳
 
Ich war mir nicht sicher, ob es sich für dich jetzt erledigt hat.

So dürfte es gehen (du muss die Zahl n durch jede Zahl von 2 bis (n-1) teilen. Ergibt sich kein Rest, so ist es auch keine Primzahl):

Code:
public class test
{
  static String primzahl(int zahl) {
    if (zahl == 2) {
      return ("ist eine Primzahl.");
    }
    for (int i=2; i<zahl; i++) {
      if (zahl%i == 0) {
        return ("ist keine Primzahl.");
      }
    }
    return ("ist eine Primzahl.");
  }
  public static void main( String args[] )
  {
    int wert=50;
    for (int i=1; i<wert; i++) {
      System.out.println(" Die Zahl " + i + " " + primzahl(i));
    }
  }
}
 
Hallo,

ich hab jetzt man ne frage! Ich habe es bis jetzt schonmal geschafft, dass die ganzen primzahlen und nicht primzahlen angezeigt werden. was muss ich machen damit die zusammen gezählt werden?? also das es 24 primzahlen sind und 76 nichtprimzahlen? Ich hoffe ihr könnt mir weiterhelfen!
Code:
public class primzahl21 {

  public static void main (String[] args) {

   int wert=100;
   int i=2;
   
   for(i=2;i<100;i=i+1){
    System.out.println(+filter(i));
   }
  }

  public static int filter(int wert){

   int counter=0;
   int counter2=0;
   int teiler=0;
   
   for(int i=2;i<wert;i=i+1){

     if(wert%i==0){
      teiler=teiler+1;
     }
   }
   
     if(teiler==0){
       counter=counter+1;
     }
     
     else{
       counter2=counter2+1;
     }

   return counter;

  }
}

Danke
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben