Primzahl Schleife

  • Themenstarter Themenstarter tanye
  • Beginndatum Beginndatum
T

tanye

Gast
Hi ,

Hab wieder ein Problem , dieses Mal denk ich nicht ganz so aufwändig zu erklären ... hoffe ich zumindest :lol:

Es geht um folgendes , ich sollte ein Programm schreiben , dass bei Eingabe einer Zahl prüft , ob es sich dabei um eine Primzahl handelt und je nach dem "ja" oder "nein" als antwort rausgeben ... aaaaber soll das ganze mithilfe einer do-schleife geschehen ... ich zeig euch mal was ich bis jetzt hab , ich kommt nicht mehr weiter ab da :

Java:
import javax.swing.*;
public class test {
	public static void main (String args[]){	
//ints deklarieren :	
		
int i = 2 ;
int n = 0 ;
boolean x = (((n % i) != 0) && (i < n)) ;

//string deklarieren :

String s =JOptionPane.showInputDialog("Bitte eine Zahl eingeben ! :");
//variable ist was im string eingegeben wurde :	

n=Integer.parseInt(s);
do {
	if (x==true)
	System.out.println("JA");
	
	if(x==false)
		System.out.println("NEIN");
}while(x);
	}	
}

Wär cool wenn einer von euch mal nen Blick drüber werfen könnte 🙂
 
Kleinder edit : Ich glaube so ist es schon etwas besser :
Java:
import javax.swing.*;


public class test {

	public static void main (String args[]){

		
//ints deklarieren :	
		
int i = 2 ;
int n = 0 ;
boolean x = (((n % i) != 0) && (i < n)) ;

//string deklarieren :

String s =JOptionPane.showInputDialog("Bitte eine Zahl eingeben ! :");

//variable ist was im string eingegeben wurde :	

n=Integer.parseInt(s);

do {
	if (x==true)
	System.out.println("Nein");
	
	else
		System.out.println("Ja");
}while(x==true);

	}
	
}
da müsste ins while irgendwie noch sowas rein wie , wenn x wahr ist oder x falsch ist ... aber dann wiederum gehts nicht auf ...
 
1. Weiß ich absolut nicht, was du da produziert hast.

Java:
boolean x = (((n % i) != 0) && (i < n)) ;

2. Wo ist die Prüfnug ob es eine Primzahl ist?

In der do while schleife darf / sollte die entscheidung nich drin stehen, sondern danach.:autsch:
 
pscht " x = (((n % i) != 0) && (i < n)) " ist nicht von mir zur Überprüfung also ganz ruhig ^^ das ist vorgegeben ! :autsch:
 
Erst hatte ich das ganze so :
Java:
import javax.swing.*;

class wasmacheich {
	
 public static void main(String[] args)
 
 
 {
	  
	 System.out.println("Ist n eine Primzahl ? :"); 
	 
	  String input=JOptionPane.showInputDialog("Zahl eingeben ?");

 int n = Integer.valueOf( input ).intValue();
 int i = 2;

 
 
 while( ((n % i) != 0) && (i < n) )
	 
 i = i+1;

 if(i==n)
 System.out.println("Ja");
 else
 System.out.println("Nein");
 
}
 }

Aber mit der Schleife hakt es ... also ... nein ...
 
pscht " x = (((n % i) != 0) && (i < n)) " ist nicht von mir zur Überprüfung also ganz ruhig ^^ das ist vorgegeben ! :autsch:
das ist aber blödsinn! im grunde stimmt schon das man überprüft ob der rest von n / i 0 ist und dann i hochzählt und solnage i < n (wenn auch nicht gut, den wurzel aus n würde auch reichen)
Aber ich kann doch nicht die überprüfung i <n da rein geben!!!!!! Himmel!!! Wenn das vom Lehrer ist, gib mir bitte seine Kontaktdaten.Das ist die Abbruchbedinung
Was soll den bitte x aussagen? isPrimAndLowerThanN? Das sollte doch bitte nur aussagen ob die Zahl eine Primzahl ist.

also x = (((n % i) != 0) innerhalb der schleife machen

(i < n) fürs while verwenden, statt dem x==true
und die ausgabe if, ja. .. nein unterhalb der schleife... fertig
 
wenn ich in der schleife , abgesehen von x=(((n % i) != 0)&&(i < n)) noch i=i+1; eingebe ... wobei i doch bei 2 anfängt ... funktioniert das theoretisch doch oder ? dann müsste er doch im prinzip erst prüfen ob die eingabe glatt durch 2 teilbar , dann 3 , dann 4 usw. oder ?
Java:
import javax.swing.*;

public class test {

	public static void main (String args[]){
	
//ints deklarieren :	
		
int i = 2 ;
int n = 0 ;
boolean x;

//string deklarieren :

String s =JOptionPane.showInputDialog("Bitte eine Zahl eingeben ! :");

//variable ist was im string eingegeben wurde :	

n=Integer.parseInt(s);

do 
{

	
x =	(((n % i) != 0)) ;

i=i+1;

	} while((i < n));

if(x=true){
	
	 System.out.println("Ja");
}
	 else{
		 
	 System.out.println("Nein");
}
}}

Bitte nicht ausflippen wenn ich daneben liege 😀 :bae:
 
denn im anderen programm (ohne schleife) hat das funktioniert ???:L

wieso hat das alles hier :
Java:
import javax.swing.*;

class wasmacheich {
	
 public static void main(String[] args)
 
 
 {
	  
	 System.out.println("Ist n eine Primzahl ? :"); 
	 
	  String input=JOptionPane.showInputDialog("Zahl eingeben ?");

 int n = Integer.valueOf( input ).intValue();
 int i = 2;

 
 
 while( ((n % i) != 0) && (i < n) )
	 
 i = i+1;

 if(i==n)
 System.out.println("Ja");
 else
 System.out.println("Nein");
 
}
 }

Super funktioniert ... und mit boolean und do nicht mehr ... ???:L
 
Zuletzt bearbeitet von einem Moderator:
Googel den Unterschied zwischen Vergleichsoperator und Zuweisungsoperator in Java.

Und programmieren ist kein raten.

Wenn das immernoch nicht klappt, dann gilt mein obiges Posting.
 
z.B if (x == 1) {
heißt das du den Wert der Variable überprüfst ob er 1 ist also gleich 1

zb x = 1
heißt das du der Variable x den Wert 1 zuschreibst ein sogenannter Zuweisungsoperator... kann mal passieren wenn es ausversehen war =) wenn nicht lies es dir bitte nochmal durch
 
du könntest das ganze auch mit der holzhammermethode machen 😀

teil die eingegebene zahl einfach solange durch alles, was größer als 1 und kleiner als sie selbst ist, lass mitzählen wie oft sie teilbar ist und werte dann den zähler aus..

also in dieser form (wenn es unbedingt ne do-while-schleife sein muss)

Java:
do {
  if(zuTestendeZahl % teiler == 0) {
    zähler++;
    }
  teiler++;
  }
while(teiler < zuTestendeZahl);

du musst den teiler nur auf 1 setzen, damit er bei 2 anfängt zu überprüfen und danach musst du nur noch gucken ob der zähler null ist, wenn er es ist hast du ne primzahl gefunden 🙂

aber ist wie gesagt die holzhammermethode ... performanz ist was anderes ^^
 
du könntest das ganze auch mit der holzhammermethode machen 😀

teil die eingegebene zahl einfach solange durch alles, was größer als 1 und kleiner als sie selbst ist, lass mitzählen wie oft sie teilbar ist und werte dann den zähler aus..

also in dieser form (wenn es unbedingt ne do-while-schleife sein muss)

Java:
do {
  if(zuTestendeZahl % teiler == 0) {
    zähler++;
    }
  teiler++;
  }
while(teiler < zuTestendeZahl);

du musst den teiler nur auf 1 setzen, damit er bei 2 anfängt zu überprüfen und danach musst du nur noch gucken ob der zähler null ist, wenn er es ist hast du ne primzahl gefunden 🙂

aber ist wie gesagt die holzhammermethode ... performanz ist was anderes ^^

Die exakte Methode, die oben zur Anwendung kommen soll.

Und wie bereits gesgt kann man bei teiler < zuTestendeZahl ^0,5 beenden
 

Neue Themen


Zurück
Oben