printNonPrimes

Status
Nicht offen für weitere Antworten.
K

kb24

Gast
hallo, ich soll eine methode schreiben, die nicht primzahlen ausgibt. Bis jetzt hab ich genausa das umgekehrte gekriegt

Code:
public class test2 { 
	
	public static void printPrimes (int max) {
	
 boolean [] prime = new boolean [max + 1];
 int i;
 
 for (i=2; i <= max; i++ ) { 
prime[i] = true; }
 
 for (int divisor = 2; divisor * divisor <= max; divisor ++) {
	 
 if (prime[divisor]) { 
	 
for (i = 2* divisor; i <= max; i = i + divisor) {
 prime [i] = false; } 
} 
} 
 
for (i = 2; i <= max; i++ ) {
 if (prime[i]) { 
System.out.print (" " + i); }
 }
 }

 public static void main(String[] args) { 
	 int G = 100; test.printPrimes(G); 
	 
	} 
 }

bestimmt kann man irgendwie den code nur bischen verändern, so dass er nicht primzahlen ausgibt
danke im voraus
 
G

Gast

Gast
hat nicht geholfen, es werden immer noch primzahlen ausgegeben
 
S

SlaterB

Gast
for (i = 2; i <= max; i++ ) {
if (prime) {
System.out.print (" " + i); }
}
}
durchläuft die Zahlen, kommt z.B. bei 2 vorbei, 2 ist prim? ja -> Ausgabe,
3? ja -> Ausgabe, 4? nein -> keine Ausgabe

und wenn du das nun umkehrst zu

for (i = 2; i <= max; i++ ) {
if (!prime) {
System.out.print (" " + i); }
}
}

dann werden exakt alle anderen Zahlen ausgebenen,
so ist es ob du es nun glaubst oder nicht oder was immer dein Programm damit macht,
bei mir gehts
 
G

Gast

Gast
du hast recht, aber mein programm gibt immer noch primzahlen, komisch
 
G

Guest

Gast
Total bescheuerte Methode alle Nichtprimzahlen ab 3 auszugeben:
Code:
public class Nichtprimzahlen{
	public static void main (String[] hanswurscht){
		for(int i=3; i<100; i++){
			boolean check=true;
			for(int j=2; j<i; j++){
				if (i%j==0){
					check = false;
				}
			}
			if(!check){
				System.out.println("primzahl "+i);
			}
		}
	}
}
 
G

Gast

Gast
for (i = 2; i <= max; i++ ) {
if (!(prime)) {
System.out.print (" " + i); }
}
}

so ist richtig, es fehlte die klammer einfach
 
Status
Nicht offen für weitere Antworten.

Oben