# Primzahl mit for Schleife



## java-anfaenger (20. Mai 2009)

Hallo Leute, ich habe folgendes Programm:


```
import java.util.Scanner;

public class Primzahl {
public static void main(String[] args) {

Scanner myscan = new Scanner(System.in); // Scanner definieren

int summe = 0;
int i = 1;
int p;
System.out.println("Bitte geben Sie eine beliebige Zahl ein!!");
int zahl = myscan.nextInt(); // beliebige Zahl-Eingabe

do { // do while Schleife

if(zahl <=2) {
break; //aus der do-while-Schleife raus springen
}

p = zahl % i; // modulo : eingegeben Zahl mod i
if (p == 0) {
summe = summe + 1;
}
i++;
} while (i < zahl);

if (summe == 1) {
System.out.println("true");
}

else {
System.out.println("false");
}}}
```


wie mache ich das mit der for Schleife?


----------



## Zenic (20. Mai 2009)

Bin zwar selbst noch neu auf dem Gebiet, aber das sollte so funktionieren.

```
import java.util.Scanner;

public class Primzahl {
	public static void main(String[] args) {
               
        Scanner myscan = new Scanner(System.in);

		boolean primzahl = true;
        System.out.println("Bitte geben Sie eine beliebige Zahl ein!");
        int zahl = myscan.nextInt(); 
	
		for(int i = 2; i < 9; i++) {
			if(zahl % i == 0 && zahl != i) {
				primzahl = false;
				i = 9;
			}
		}
		System.out.println(primzahl);
	}
}
```

Aufbau einer For- Schleife:
for(zählervariable initialisieren; Abbruchbedingung; Aktion)

Ob es die sauberste Variante ist kann ich nicht beurteilen, aber ich vermute Aufgrund des "i = 9;" eher nicht.


----------



## Leroy42 (20. Mai 2009)

Zenic hat gesagt.:


> Ob es die sauberste Variante ist kann ich nicht beurteilen, aber ich vermute Aufgrund des "i = 9;" eher nicht.



Es geht schon,

aber statt *i=9;* zu schreiben würde ein einfaches *break;* auch ausreichen


----------



## Schandro (20. Mai 2009)

```
import java.util.Scanner;

class A{

	public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        int number = scanner.nextInt();
		int squareRootOfNumber = (int)Math.sqrt(number);

		boolean isPrimeNumber = true;
		for(int i=2;i<squareRootOfNumber+1;++i){
			if(number%i==0){
				isPrimeNumber = false;
				break;
			}
		}
		System.out.println("isPrimeNumber: "+isPrimeNumber);
	}
}
```

@Zenic:
warum lässt du i nur bis 9 laufen? Und warum ausgerechnet bis "9"? Imho falsch
Außerdem:


> i = 9;


schreib lieber

```
break;
```


----------



## Zenic (20. Mai 2009)

Schandro hat gesagt.:


> @Zenic:
> warum lässt du i nur bis 9 laufen? Imho falsch
> 
> 
> ...



stimmt, das i nur bis 9 geht war ein Denkfehler.
Das break; hatte ich zu Beginn auch hat aber nicht funktioniert, aber da war der Fehler wohl noch wo anders.


----------

