PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Primzahl while schleife



PSP_GIGA
06.06.2010, 14:58
hallo leute

und zwar mein problem ist ich soll in informatik mit while schleife keine while do ein programm programmieren in dem man eine zahl eingibt und das guckt dann ob es eine primzahl ist oder nicht

ich komm i.wie nicht weiter ;D

so hab ich angefangen könnt ihr mir vllt sagen was ich änder muss weil es will noch nicht laufen -.-




import java.util.*;

public class primzahl {

public static void main (String argv []) {

int x;
int i=2;
boolean prim;

Scanner input = new Scanner (System.in);
System.out.print ("Bitte eine Zahl eingeben: ");
x = Integer.parseInt (input.nextLine());

booleon value = true;
while (i < x) {
if ((x % i) == 0) {value = false;}
x++;
}
return value;
}
}

Apex
06.06.2010, 15:22
Ich würde das alles in Variablen speichern und nicht in Int. Also z. B. so:

var Z;
var PZ = "Ja";

var Durch = 2;

do {
Den Teil hier kotz ic hdir jetz nicht vor, da du den eigentlic hrichtig hast. Hier musste halt überprüfen ob die Zahl durch 2 Teilbar ist

Durch++;

} while (Durch <=Z/2);

So würde das bei mir aussehen, eigentlich selbsterklärend.

hl2.exe
06.06.2010, 15:25
Ich habe das jetzt so gelöst...

import java.io.*;
public class Primzahl
{
public static void main(String argv[])throws IOException
{
int ganzZahl, teiler = 2, rest;
boolean istPrim;
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Primzahlpruefung");
System.out.print("Ganze Zahl eingeben: ");
ganzZahl = Integer.parseInt(input.readLine());
istPrim = true;
while ((teiler * teiler) <= ganzZahl)
{
rest = ganzZahl % teiler;
if (rest > 0) istPrim = false;
teiler++;
}
if (istPrim) System.out.println("Die Zahl " + ganzZahl + " ist eine Primzahl. ");
else System.out.println("Die Zahl " + ganzZahl + " ist keine Primzahl. ");
}
}

PSP_GIGA
06.06.2010, 17:45
danke für die antworten
habs in scanner umgeschrieben und alles funktioniert ;)

energy47
01.07.2010, 18:23
@ hl2.exe da ist ein fehler in deinem algorythmus..
der rest bei modulo ist immer größer 0 bei dir.. und so bald die variable isPrim = false gesetzt hast in deiner if anweisung wie sie nie mehr true gesetzt..

hier meine version:


public static boolean isPrim(int p)
{
if (p % 2 == 0) return false; //wenn 2 teiler von p ist p nicht prim
int i = (int) Math.sqrt(p); // es genögt nach teilern kleiner wurzel p zu suchen
if (i % 2 == 0) i--; // es genügt nur ungerade teiler zu prüfen da p selbst ungerade ist
while(i>2)
{
if(p % i == 0) return false;
i -=2; //wie gesagt nur ungerade zahlen, deshalb immer -2
}
return true;
}