primzahl

lily

Aktives Mitglied
hallo @ll,

ich möchte gerne das in der console alle zahlen bis 50 ausgegeben werden, aber nur die Primzahlen
sichtbar sind und alle die keine Primzahlen sind als Minuszeichen...
ich weiß das ich eine for schleife bilden muss aber ich weiß nicht wie....könnt ihr mir bitte helfen:noe:?

hier mein code:

Java:
public static boolean istPrime(int zahl)
	 {

	      
		   if(zahl%2==0)
		   {
	               return false;
	 
		   }
		   else
		   {
			   	   return true;
		   
		   }   
	 }
	 public static void printPrime(int zahl)
	 
		
		 
		
	 public static void main(String[] args)
	 {
		istPrime(7);
		System.out.println(istPrime(7));
	 }
}
 
G

Gast2

Gast
Java:
for (int i = 1; i < 51; i++) {
  System.out.println (istPrime (i) ? i + " ist prim" : "-");
}
Deine istPrim Methode ist aber noch falsch ;)
 

lily

Aktives Mitglied
ah supi danke, danke danke :toll:

und wenn ich nun nicht untereinander sondern neben einander haben möchte...
Java:
2 3 - 5 - 7 - - - 11 - 13 - - - 17 - 19 - - - 23 - - - - - 29 - 31 - - - - - 37 - - - 41 - 43 - - - 47

so soll das zum schluss aussehen
 
H

hüteüberhüte

Gast
Ich glaube es ist eher so etwas gesucht:
Java:
System.out.println(prime(i) ? i : -i);
 

lily

Aktives Mitglied
ja mit löschen geht das

sieht jetzt so aus
Java:
1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35-37-39-41-43-45-47-49-
 

lily

Aktives Mitglied
wie bekomm ich es denn hin das alle nicht primzahlen nen minusstrich haben nicht nur zwischen den zahlen, also so wie der code den ich gepostet hab?
 
H

hüteüberhüte

Gast
Hm, schreib vor alles mal ein
Code:
"" +
, vielleicht gehts dann.
 

lily

Aktives Mitglied
entschuldige...

es sollen die Primzahlen sichtbar sein Beispiel: 2,3 und die nicht Primzahlen 2,3,- (da steht jetzt ein minus statt der 4) dann kommt die 5(als Primzahl) dann kommt wieder -(statt der 6) und 7 bleibt wieder stehen...

Java:
2 3 - 5 - 7 - - - 11 - 13 - - - 17 - 19 - - - 23 - - - - - 29 - 31 - - - - - 37 - - - 41 - 43 - - - 47

und ich will mit der 2 beginnen
 
H

hüteüberhüte

Gast
Also bei mir gehts:
Java:
    private static boolean prime(int i) {
        return Math.random() < 0.5;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 98; i++) {
            System.out.println(prime(i) ? i : -i);
        }
    }
Code:
0
-1
2
3
-4
-5
6
7
-8
-9
-10
-11
12
13
-14
-15
-16
17
18
-19
20
-21
22
-23
24
25
-26
27
-28
29
-30
31
32
-33
-34
35
36
-37
38
39
40
-41
-42
-43
-44
45
-46
47
-48
49
50
51
52
53
-54
-55
56
-57
-58
59
-60
61
-62
63
64
-65
66
67
-68
-69
-70
71
72
73
74
-75
-76
-77
-78
79
80
-81
-82
-83
-84
85
-86
87
-88
-89
90
-91
-92
-93
94
95
96
97
 
P

pappawinni

Gast
Das wäre nun auch wieder mit dem Sieb des Eratosthenes lösbar.
wie hier..
http://www.java-forum.org/java-basi...ieb-eratosthenes-ohne-boolean.html#post963345
oder da
http://www.java-forum.org/hausaufgaben/143775-primzahlen.html#post958079

Java:
public class Primes {	
       // Sieb des Eratosthenes
	
	   public static void main(String[] args) {
	        
	        int n =50;
	        int[] primes = new int[n-1];
	        
	        for (int i = 2; i <= n; i++) {
	            primes[i-2] = i;    
	        }
	        
	        for(int i=2; i <= n; i++) {
	            if (primes[i-2]>0) {
	                System.out.printf("%d ",i);
	                if (i <= Math.sqrt(n)) {
	                    for (int j = i*i; j <= n; j+=i) {
	                        if (j <= n) primes[j-2]=0;
	                    }                                       
	                }
	            }
	            else{
	                System.out.print("- ");	            	
	            }	            	
	        }
	    }

}
 
H

hüteüberhüte

Gast
Java:
2 3 - 5 - 7 - - - 11 - 13 - - - 17 - 19 - - - 23 - - - - - 29 - 31 - - - - - 37 - - - 41 - 43 - - - 47

und ich will mit der 2 beginnen

Ok, so solls aussehen. Soll die Ausgabe den untereinander oder nebeneinander sein? Sollen mehrere nicht-Primzahlen zusammengefasst werden zu _einem_ Strich oder sollen es mehrere sein?
 
H

hüteüberhüte

Gast
Von mir getestet und für gut befunden: :D
Java:
        for (int i = 2; i < 98; i++) {
            System.out.print((prime(i) ? i : "-") + " ");
        }
 
S

Spacerat

Gast
Java:
import static java.lang.Math.abs;
import static java.lang.Math.sqrt;
import static java.lang.Math.max;
import static java.lang.Math.min;

public class Primes
{
	public static void main(String[] args)
	throws Exception
	{
		listPrimes(2, 50);
	}

	public static boolean isPrime(long value)
	{
		value = abs(value);
		if(value == 2) {
			return true;
		}
		if(value < 2 || value % 2 == 0) {
			return false;
		}
		long max = (long) sqrt(value);
		for(long n = 3; n <= max; n += 2) {
			if(value % n == 0) return false;
		}
		return true;
	}

	public static void listPrimes(long from, long to)
	{
		long f = min(from, to);
		long t = max(from, to);
		for(long n = f; n <= t; n++) {
			if(isPrime(n)) {
				System.out.print(n);
			} else {
				System.out.print("-");
			}
			System.out.print(" ");
		}
		System.out.println();
	}
}
... genehm so?
 
Zuletzt bearbeitet von einem Moderator:

lily

Aktives Mitglied
Von mir getestet und für gut befunden: :D
Java:
        for (int i = 2; i < 98; i++) {
            System.out.print((prime(i) ? i : "-") + " ");
        }

ist aber immer nur ein minusstrich...ich wollte ja für jede NICHTprimzahl nen strich und auch ohne leerzeichen

also so halt
Java:
2 3 - 5 - 7 - - - 11 - 13 - - - 17 - 19 - - - 23 - - - - - 29 - 31 - - - - - 37 - - - 41 - 43 - - - 47
 
H

hüteüberhüte

Gast
Also, entweder mit meinen Augen stimmt irgendetwas nicht oder dort steht für jede Nicht-Primzahl ein Bindestrich und ein Leerzeichen nach jeder Zahl - was du suchst.
 

lily

Aktives Mitglied
Also, entweder mit meinen Augen stimmt irgendetwas nicht oder dort steht für jede Nicht-Primzahl ein Bindestrich und ein Leerzeichen nach jeder Zahl - was du suchst.

wenn ich das bei mir aufrufe sieht es in der console so aus

Java:
- 3 - 5 - 7 - 9 - 11 - 13 - 15 - 17 - 19 - 21 - 23 - 25 - 27 - 29 - 31 - 33 - 35 - 37 - 39 - 41 - 43 - 45 - 47 - 49 - 51 - 53 - 55 - 57 - 59 - 61 - 63 - 65 - 67 - 69 - 71 - 73 - 75 - 77 - 79 - 81 - 83 - 85 - 87 - 89 - 91 - 93 - 95 - 97
 
Zuletzt bearbeitet:

lily

Aktives Mitglied
Java:
import static java.lang.Math.abs;
import static java.lang.Math.sqrt;
import static java.lang.Math.ceil;
import static java.lang.Math.log10;

public class Primes
{
	public static void main(String[] args)
	throws Exception
	{
		listPrimes(2, 50);
	}

	public static boolean isPrime(long value)
	{
		value = abs(value);
		if(value == 2) {
			return true;
		}
		if(value < 2 || value % 2 == 0) {
			return false;
		}
		long max = (long) sqrt(value);
		for(long n = 3; n <= max; n += 2) {
			if(value % n == 0) return false;
		}
		return true;
	}

	public static void listPrimes(long from, long to)
	{
		long f = Math.min(from, to);
		long t = Math.max(from, to);
		for(long n = f; n <= t; n++) {
			if(isPrime(n)) {
				System.out.print(n);
			} else {
				System.out.print("-");
			}
			System.out.print(" ");
		}
		System.out.println();
	}
}
... genehm so?


das sieht super top aus, nur leider versteh ich nicht was math ist und warum da soviel imports sind...
ich will das lieber nur mit 2 methoden machen
 
S

Spacerat

Gast
Die Imports sind das einzige, was ich von der Urversion, welche eine Statistik aller Primzahlen im gesamten Long-Bereich ausgeben konnte nicht gelöscht habe, die kannst du also ignorieren (das erklärt auch, warum ich long statt int verwende).
Alles in 2 Methoden ist auch nicht allzu schwer...
Java:
import static java.lang.Math.abs;
import static java.lang.Math.sqrt;
 
public class Primes
{
    public static void main(String[] args)
    throws Exception
    {
        long f = 2;
        long t = 50;
        for(long n = f; n <= t; n++) {
            if(isPrime(n)) {
                System.out.print(n);
            } else {
                System.out.print("-");
            }
            System.out.print(" ");
        }
        System.out.println();
    }
 
    public static boolean isPrime(long value)
    {
        value = abs(value);
        if(value == 2) {
            return true;
        }
        if(value < 2 || value % 2 == 0) {
            return false;
        }
        long max = (long) sqrt(value);
        for(long n = 3; n <= max; n += 2) {
            if(value % n == 0) return false;
        }
        return true;
    }
}
Math ist eine Utilityklasse für einige mathematische Methoden wie Sinus, Cosinus, Quadratwurzel usw. Die Quadratwurzel wird für die Festlegung der Testobergrenze beim Primzahltest benötigt.
 
Zuletzt bearbeitet von einem Moderator:
H

hüteüberhüte

Gast
Die Methode schließt viele nicht-Primzahlen schon früh aus (
Code:
value % 2 == 0
) und ist deshalb relativ schnell. Die vielen imports sind unnötig, wenn stattdessen Math. geschrieben worden wäre. Aber sieht natürlich cool aus.
 

lily

Aktives Mitglied
das ist meine probe prüfungsaufgabenstellung

deshalb nur 2 Methoden

Schreiben Sie eine Methode istPrimzahl(int zahl). Dieser Methode soll eine Integer-Zahl als Parameter übergeben werden. Die Methode liefert true zurück, wenn die Zahl zahl eine Primzahl ist und false sonst.
 Schreiben Sie eine Methode druckePrimzahlen(int zahl). Mithilfe der Methode istPrimzahl sollen in der Methode druckePrimzahlen alle Primzahlen bis zur
Zahl zahl auf die Konsole ausgegeben werden. Das Aussehen der Ausgabe ist Ihnen überlassen.
 Rufen Sie die Methode druckePrimzahlen mit einem beliebigen Wert für zahl in main() auf.
 
H

hüteüberhüte

Gast
Ok, wenn es in deinem Ermessen liegt, drucke / gib alle Primzahlen (nur solche) doch untereinander aus?
 

lily

Aktives Mitglied
so sieht jetzt mein code aus aber er funktioniert nicht ...ich könnt heuln

Java:
 public static boolean istPrimzahl(int zahl)
	 {
		   if(zahl%2==0)
		   {
	               return false;
		   }
		   else
		   {
			   	   return true;
		   
		   } 
		 
	 }
	 public static void druckePrimzahl(int zahl)
	 {
	 
	 for (int i = 2; i < 98; i++) 
	 {
         System.out.println(prime((i) ? i : "-") + " ");
	 }
		
	 }	 
		
	 public static void main(String[] args)
	 {
		 for (int i = 0; i < 98; i++) {
		            System.out.println(prime(i) ? i : -i);
		        }
		    }
		 	 }
 
S

Spacerat

Gast
Tja... das Manko dürfte die Art sein, wie du Nicht-Primzahlen eliminierst. Du eliminierst halt nur alle geraden Zahlen. Ein Primzahltest ist das ([c]istPrimZahl()[/c]) nicht. ;)
 
Zuletzt bearbeitet von einem Moderator:

Volvagia

Top Contributor
Es gab eine Reihe von Regeln, durch die eine Primzahl identifiziert werden kann. Leider weiß ich die nicht mehr, ist schon Jahre her.
Mach doch einfach eine Schleife, die von 3 bis n - 1 durchtestet. Das ist wohl der einfachste Weg.
 
P

pappawinni

Gast
Also ich weiss ja nicht..
irgendwo kann modulo 2 für eine Primzahlprüfung nicht funktionieren.

Java:
 	   private static boolean isPrime(int number){
	        for (int i = 2; i < number; i++) {
	            if (number % i == 0) return false;    
	        }
	        return true;
	   }
 
Zuletzt bearbeitet von einem Moderator:

Volvagia

Top Contributor
Java:
public static boolean istPrimzahl(int zahl) {
    Schleife mit Zählvariable von 2 bis (zahl - 1) {
    	Wenn Zahl Modulo Zählvariable 0 ist {
    		Gib false zurück
    	}
    }
    Gib true zurück
}

So müsste es doch gehen?
 
S

Spacerat

Gast
Es gab eine Reihe von Regeln, durch die eine Primzahl identifiziert werden kann. Leider weiß ich die nicht mehr, ist schon Jahre her.

Wie kann man das denn vergessen? Primzahlen sind positive glatte Zahlen die nicht mehr und nicht weniger als 2 verschiedene Teiler haben, nämlich 1 und sich selbst. Die 1 ist deswegen per Definition keine Primzahl und die 2 die einzig gerade. Um festzustellen ob eine Primzahl vorliegt, muss man die Testzahl durch alle ungeraden Zahlen bis zu ihrer Wurzel (bei 101 wüsste man also bereits nach der 5. Teilung, das es eine Primzahl ist) teilen und auf nachkommastellen prüfen (value % testzahl == 0).
Bis zur Wurzel der Zahl deswegen, weil alles was über diese hinaus geht im Ergebnis wieder in den bereits getesten Bereich fällt (z.B. 101 / 11 = 9; 9 wurde bereits getestet).
 
Zuletzt bearbeitet von einem Moderator:
P

pappawinni

Gast
Also dann so einfach es geht..
Java:
public class Primzahlen {	
	
	   public static void main(String[] args) {
	        
	        int n =50;
       
	        for (int i = 2; i <= n; i++) {
	        	if (isPrime(i)){
		            System.out.print(i);	        		
	        	}
	        	else{
		            System.out.print("-");	        		
	        	}
	            System.out.print(" ");	        		
	        }
	   }
 	   private static boolean isPrime(int number){
 		   //es reicht die Prüfung bis sqrt(number)
 		   //aber wenn sqrt nicht verwendet werden kann/darf
 		   //dann halt mit Kanonen auf Spatzen
	        for (int i = 2; i < number; i++) {
	            if (number % i == 0) return false;    
	        }
	        return true;
	   }
}
 
S

Spacerat

Gast
kann mir bitte jemand helfen...bin leider tiefster Anfänger :(
Wobei denn bitte? :( Bei Copy and Paste? Du brauchst doch meine oder pappawinnis Klasse einfach nur abtippen, kürzer oder besser geht's nicht (okay, hütes Ausgabecode ist kürzer, aber für Anfänger wahrscheinlich weniger verständlich).
 
P

pappawinni

Gast
Hallo?
Wir versuchen nichts anderes, als dir zu helfen.
Aber du scheinst ja nicht einmal die elementarsten Dinge zu wissen.
Was verstehst du nicht, an dem von mir geposteten Code?
 

lily

Aktives Mitglied
oh das sieht ja wundervoll aus...danke danke danke

eine bitte hab ich noch und dann ist aber wirklich Schluss

wo kann ich noch meine 2. Methode einsetzen
Java:
public static void druckePrimzahl(int zahl)
 

Volvagia

Top Contributor
Die Reihenfolge spielt bei Methoden in der Datei keine Rolle.

Oder meinst du, wo du sie aufrufen kannst?
In der Main anstelle der Schleife, die sich dann in der Methode befindet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 Java Basics - Anfänger-Themen 8
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
O Erste Schritte Primzahl Methode Java Basics - Anfänger-Themen 8
I Erste Schritte Testen, ob eine Zahl eine Primzahl ist Java Basics - Anfänger-Themen 8
O Primzahl bis n Java Basics - Anfänger-Themen 5
D Primzahl Aufgabe Java Basics - Anfänger-Themen 5
R Primzahl ja/nein - besserer Code möglich? Java Basics - Anfänger-Themen 2
T Primzahl Java Basics - Anfänger-Themen 12
I Höchste Zahl berechnen die eine Eingabe ohne Rest teilt und eine Primzahl ist Java Basics - Anfänger-Themen 2
U Primzahl-Tester Java Basics - Anfänger-Themen 3
A 10001-te Primzahl herausfinden Java Basics - Anfänger-Themen 5
R Primzahl kleiner 3 Java Basics - Anfänger-Themen 2
T Primzahl Schleife Java Basics - Anfänger-Themen 15
X Primzahl Ausgabe falsch Java Basics - Anfänger-Themen 10
M Primzahl Java Basics - Anfänger-Themen 11
D Array Fehler / groesste Primzahl suchen Java Basics - Anfänger-Themen 4
F Primzahl oder nicht?! Java Basics - Anfänger-Themen 7
S Primzahl in einem Array finden Java Basics - Anfänger-Themen 21
J Primzahl mit for Schleife Java Basics - Anfänger-Themen 4
A Fehler im Primzahl Programm Java Basics - Anfänger-Themen 17
S Primzahl berechnen in Java Java Basics - Anfänger-Themen 7
K Primzahl//immer true Java Basics - Anfänger-Themen 7
ven000m Primzahl.class wie starte ich diese einzelne Datei? Java Basics - Anfänger-Themen 10
M Primzahl Java Basics - Anfänger-Themen 8
W Nächstgelegene Primzahl Java Basics - Anfänger-Themen 3
I Primzahl suchen Java Basics - Anfänger-Themen 5
G primzahl oder nicht? Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben