Eine solche Implementierung wird etwas länger, dafür aber auch deutlich performanter:
Effizienter Primzahltest
if (value <= 16) {
return (value == 2 || value == 3 || value == 5 || value == 7 || value == 11 || value == 13);}
if (value% 2 == 0 || value% 3 == 0 || value% 5 == 0 || value% 7 == 0) {
return false;}
for (long i = 10; i * i <= value; i += 10) {
if (value% (i+1) == 0) { // 11, 21, 31, 41, 51,...
if (value% (i+3) == 0) { // 13, 23, 33, 43, 53,...
if (value% (i+7) == 0) { // 17, 27, 37, 47, 57,...
if (value% (i+9) == 0) { // 19, 29, 39, 49, 59,... Eine simple Performance-Messung hat ergeben, daß der letzte Algorithmus bei Zahlen in der Größenordnung um 100. 000. Arrays - finden Sie alle Primzahlen aus dem array. 000 knapp um den Faktor drei schneller ist (er benötigt circa 36% der Rechenzeit des ersten Algorithmus), um eine Primzahl als solche zu erkennen. Bei Zahlen mit relativ kleinen Teilern sind beide Algorithmen nahezu identisch schnell. Der zweite Algorithmus spielt seine Stärke bei (großen) Primzahlen und bei Zahlen mit ausschließlich großen Teilern aus (also insbesondere auch bei Zahlen, die das Produkt zweier großer Primzahlen sind).
- Java primzahlen ausgeben arras.fr
- Java primzahlen ausgeben array programming
- Java primzahlen ausgeben array tutorial
- Java primzahlen ausgeben array c++
Java Primzahlen Ausgeben Arras.Fr
Wir sollten for Schleife nur bis zur Quadratwurzel der Nummer iterieren, statt bis for Nummer. Nur wenige der Antworten haben diesen Punkt umgesetzt, aber ich wollte es hier noch erwähnen. Verwenden Sie den Apache Commons Math primality test, die Methode bezieht sich auf Primzahlen im Bereich von int. Sie können Quellcode auf GitHub finden. < dependency >
< groupId > org. apache. commons groupId >
< artifactId > commons - math3 artifactId >
< version > 3. 6. 1 version >
dependency >
//
Primes. isPrime ( 2147483629); Es verwendet den Miller-Rabin-Wahrscheinlichkeitstest so, dass ein Ergebnis garantiert ist: Es verwendet die ersten Primzahlen als sukzessive Basis (siehe Handbuch der angewandten Kryptographie von Menezes, Tabelle 4. 1 / Seite 140). Java primzahlen ausgeben arras.fr. Wenn Sie nach Primzahlen suchen, die größer als X_VALUE: Verwenden Sie BigInteger#isProbablePrime(int certainty), um den Hauptkandidaten vorab zu überprüfen Gibt true zurück, wenn dieser BigInteger wahrscheinlich prim ist, false, wenn er definitiv zusammengesetzt ist.
Java Primzahlen Ausgeben Array Programming
#2
Das liegt daran, das du in der ersten Schleife alle Indexe auf true setzt und in der zweiten for Schleife die Werte nach true prüfst (Die dann natürlich alle true sind). Die beste Art dies zu lösen wäre mit einer verschachtelten for Schleife in etwa so
Java:
for (i = 2; i <= max; i++) {
primzahl = true;
for (j= 2; j<= zahl/2; j++) {
if (i% j== 0) {
primzahl = false;
break;}}
if (primzahl) {
(i+" ist eine Primzahl");}}
Informatinen von hier. Java primzahlen ausgeben array c++. Zuletzt bearbeitet: 24. Jun 2015
#3
In deinem Fall müsste die Methode also so aussehen:
static public void gibPrimzahlAus(int max) {
maxNumber = max;
boolean[] istPrimzahl = new boolean[maxNumber];
for (int i = 2; i < maxNumber; i++) {
// solange noch kein Teiler da ist, sind erst einmal alle Zahlen Primzahlen istPrimzahl[i] = true;
for (int j= 2; j<= i/2; j++) {
istPrimzahl[i] = false;
break;}else{
istPrimzahl[i] = true;}}}
if(istPrimzahl[i]){
("Primzahl: " + i);}}}
Java Primzahlen Ausgeben Array Tutorial
2. Streiche alle Vielfachen von 2 heraus. 3. Gehe zur nächstgrößeren nichtgestrichenen Zahl und streiche deren Vielfache heraus. 3. Wiederhole 3. sooft es geht. 4. Die übriggebliebenen Zahlen sind Primzahlen. Ist so ähnlich wie deine Methode, wenn man 2 immer mit 2 addiert siebt man quasi auch "Nicht-Primzahlen" aus. Hier läuft es nur mit einer Division. #6
ok, ich werd mich mal dahinter setzen, aber mein gedankegang ist doch nicht so ganz falsch oder? Ich will es ja lernen und nicht gleich eine Lösung haben;)
Vielen Dank für die Antworten, wie ich gepostet habe, war ok oder eher nicht? blub
#7
Der Ansatz deiner Lösung ist "nicht schlecht" allerdings nicht effizient. Java primzahlen ausgeben array tutorial. Wie du schon selber gesagt hast berechnest du sehr vieles doppelt. Der Algrorithmus von Eratosthenes ist anfangs recht langsam und wird dann immer schneller. Deiner ist Konstant langsam. Dazu kommt noch dass eine Multiplikation mit 2 eindeutig schneller ist wie ein plus 2... Rein effizienztechnisch gesehen, da eine multiplikation mit einem Bitshift realisiert wird.
Java Primzahlen Ausgeben Array C++
Mit Java Daten zu MySQL Datenbank hinzufügen
Ich habe ein Programm geschrieben, das Primzahlen errechnet. DG1XPZ - JAVA-Programmierung, Sieb des Erastosthenes. Ich würde diese nun auch gerne in einer MySQL Datenbank abspeichern, weiß aber nicht genau wie ich das anstellen soll (eigentlich habe ich überhaupt keine Ahnung:)). Hier das ursprüngliche Programm:
public class Primzahlen {
public static void main (String[] args) {
double d1;
int[] p;
p = new int[350000000];
p[0] = 2;
int a = 0;
("2, ");
for(int Zahl = 3; Zahl < 2000000000; Zahl++) {
for(int b = 0; b < 2000000000; b++) {
d1 = (double) Zahl/p[b];
int i1 = (int) d1;
//(d1-i1 + " Ergebnis " + Zahl+ "/" + p[b] + ": " + d1 + " Zahl: " + Zahl + " Divisor: " + p[b] + " " + p[0] + p[1] + p[2] + p[3]);
if ((d1 - i1) == 0. 0) {
//(Zahl + " ist keine Primzahl, sie ist durch " + p[b] + " teilbar. ");
break;} else {
if((p[b]*p[b]) > Zahl) {
(Zahl + ", ");
a++;
p[a] = Zahl;
break;}}}}}}
Und hier mein kläglicher Versuch die Zahlen in der Datenbank zu speichern:
import;
Connection con = tConnection("jdbc:mysqllocalhost:4001?
In einer dann folgenden Schleife werden die
Vielfachen dieses Wertes in isPrim mit false
markiert, sodass die zugehörigen Werte so von der
Primzahlsuche ausgeschlossen werden. Nach Abschluss der
Durchläufe enthält die ArrayList alle Primzahlen
zwischen 2 und MAX und kann zurückgegeben werden. gibAus(ArrayList list)
Die Methode dient der Ausgabe der Primzahlen. Primzahlen im Array ausgeben ♨󠄂󠆷 Java - Hilfe | Java-Forum.org. Sie durchläuft
die übergebene ArrayList und gibt die dort abgelegten Werte
auf der Konsole aus.