{"id":21954,"date":"2024-10-05T05:51:40","date_gmt":"2024-10-05T03:51:40","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=21954"},"modified":"2024-09-23T09:13:46","modified_gmt":"2024-09-23T07:13:46","slug":"goldbachsche-vermutung","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=21954","title":{"rendered":"Java Programm zur Goldbachsche Vermutung mit Heap Analyse"},"content":{"rendered":"<p>Die <a href=\"https:\/\/de.wikipedia.org\/wiki\/Goldbachsche_Vermutung\" rel=\"noopener\" target=\"_blank\">Goldbachsche Vermutung<\/a> ist eine der \u00e4ltesten ungel\u00f6sten Probleme in der Mathematik, die der Mathematiker Christian Goldbach 1742 in einem Brief an Leonhard Euler formulierte. Sie besagt: <\/p>\n<p><strong>Jede gerade Zahl gr\u00f6\u00dfer als 2 l\u00e4sst sich als Summe zweier Primzahlen darstellen.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/Goldbachsche-Vermutung.png\" alt=\"\" width=\"4842\" height=\"3334\" class=\"aligncenter size-full wp-image-21968\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/Goldbachsche-Vermutung.png 4842w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/Goldbachsche-Vermutung-300x207.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/Goldbachsche-Vermutung-1024x705.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/Goldbachsche-Vermutung-768x529.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/Goldbachsche-Vermutung-1536x1058.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/Goldbachsche-Vermutung-2048x1410.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Diese Vermutung ist in zwei Formen bekannt: <!--more--><\/p>\n<p>1. Schwache Goldbachsche Vermutung:\u2028 Jede ungerade Zahl gr\u00f6\u00dfer als 5 l\u00e4sst sich als Summe von drei <a href=\"https:\/\/de.wikipedia.org\/wiki\/Primzahl\" rel=\"noopener\" target=\"_blank\">Primzahlen<\/a> darstellen. Diese Vermutung wurde 2013 von Harald Helfgott bewiesen.<\/p>\n<p>2. Starke Goldbachsche Vermutung:\u2028 Jede gerade Zahl gr\u00f6\u00dfer als 2 l\u00e4sst sich als Summe von zwei Primzahlen darstellen. Dies ist die ber\u00fchmtere und unbewiesene Form der Vermutung.<\/p>\n<p><strong>Beispiele<\/strong>:<br \/>\n4 = 2 + 2<\/p>\n<p>6 = 3 + 3<\/p>\n<p>8 = 3 + 5<\/p>\n<p>10 = 5 + 5 oder 3 + 7<\/p>\n<p>Obwohl die Vermutung f\u00fcr sehr viele Zahlen empirisch best\u00e4tigt wurde, ist bislang kein allgemeiner Beweis bekannt, der f\u00fcr alle geraden Zahlen gilt. Mathematiker haben die Vermutung f\u00fcr sehr gro\u00dfe Zahlen durch Computertests \u00fcberpr\u00fcft, aber ein mathematischer Beweis, der die Vermutung allgemein beweist, fehlt bis heute.<\/p>\n<p>Wenn das mal kein Grund ist, ein Java-Programm f\u00fcr die starke Goldbachsche Vermutung zu schreiben, das das \u00fcberpr\u00fcft.<\/p>\n<pre class=\"theme:eclipse lang:java decode:true \" >package de.wenzlaff;\r\n\r\nimport java.math.BigInteger;\r\n\r\n\/**\r\n * GoldbachsVermutung.\r\n * \r\n * Starke Goldbachsche Vermutung: Jede gerade Zahl gr\u00f6\u00dfer als 2 l\u00e4sst sich als\r\n * Summe von zwei Primzahlen darstellen. Dies ist die ber\u00fchmtere und unbewiesene\r\n * Form der Vermutung.\r\n * \r\n * Beispiele:\r\n * \r\n * 4 = 2 + 2\r\n * \r\n * 6 = 3 + 3\r\n * \r\n * 8 = 3 + 5\r\n * \r\n * 10 = 5 + 5 oder 3 + 7\r\n *\r\n * Anm.: Mit Ausnahme der Zahl 2 sind alle Primzahlen ungerade\r\n * \r\n * @author Thomas Wenzlaff\r\n *\/\r\npublic class GoldbachsVermutung {\r\n\r\n\tpublic static void main(String[] args) {\r\n\t\tif (args.length != 2) {\r\n\t\t\tSystem.out.println(\"Bitte zwei Parameter eingeben: eine obere Grenze und eine Startzahl.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tBigInteger obergrenze = new BigInteger(args[0]);\r\n\t\t\tBigInteger zwei = BigInteger.valueOf(2);\r\n\t\t\tBigInteger startzahl = new BigInteger(args[1]);\r\n\r\n\t\t\tif (obergrenze.compareTo(startzahl) &gt;= 0 &amp;&amp; startzahl.compareTo(BigInteger.valueOf(2)) &gt;= 0 &amp;&amp; startzahl.mod(zwei).equals(BigInteger.ZERO)) {\r\n\t\t\t\tfor (BigInteger zahl = startzahl; zahl.compareTo(obergrenze) &lt;= 0; zahl = zahl.add(zwei)) {\r\n\t\t\t\t\tboolean ergebnis = pruefeGoldbach(zahl);\r\n\t\t\t\t\tif (!ergebnis) {\r\n\t\t\t\t\t\tString text = \"Die Zahl \" + zahl + \" l\u00e4sst sich NICHT als Summe zweier Primzahlen darstellen.\";\r\n\t\t\t\t\t\tSystem.err.println(text);\r\n\t\t\t\t\t\tthrow new IllegalArgumentException(text);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tSystem.out.println(\"Bitte eine g\u00fcltige obere Grenze und eine gerade Startzahl gr\u00f6\u00dfer als 2 eingeben.\");\r\n\t\t\t}\r\n\t\t} catch (NumberFormatException e) {\r\n\t\t\tSystem.out.println(\"Bitte zwei Parameter eingeben: eine obere Grenze und eine Startzahl.\");\r\n\t\t}\r\n\t}\r\n\r\n\t\/\/ \u00dcberpr\u00fcft, ob eine Zahl als Summe zweier Primzahlen darstellbar ist\r\n\tpublic static boolean pruefeGoldbach(BigInteger zahl) {\r\n\t\tBigInteger zwei = BigInteger.valueOf(2);\r\n\t\tfor (BigInteger i = zwei; i.compareTo(zahl.divide(zwei)) &lt;= 0; i = i.add(BigInteger.ONE)) {\r\n\t\t\tif (istPrimzahl(i) &amp;&amp; istPrimzahl(zahl.subtract(i))) {\r\n\t\t\t\tSystem.out.println(zahl + \" = \" + i + \" + \" + zahl.subtract(i));\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t\/\/ \u00dcberpr\u00fcft, ob eine Zahl eine Primzahl ist\r\n\tpublic static boolean istPrimzahl(BigInteger zahl) {\r\n\t\tif (zahl.compareTo(BigInteger.ONE) &lt;= 0)\r\n\t\t\treturn false;\r\n\t\tBigInteger sqrtZahl = zahl.sqrt();\r\n\t\tfor (BigInteger i = BigInteger.valueOf(2); i.compareTo(sqrtZahl) &lt;= 0; i = i.add(BigInteger.ONE)) {\r\n\t\t\tif (zahl.mod(i).equals(BigInteger.ZERO)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n<\/pre>\n<p>Ich starte das Programm mal mit openjdk 21.0.1 und diesen Werten: 1000000000 2<\/p>\n<p>Zus\u00e4tzlich um den Speicher w\u00e4hrend des laufes zu analysieren: <\/p>\n<pre class=\"lang:default decode:true \" >-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false<\/pre>\n<p>Der Speicher sieht nach ca. einer Stunde Laufzeit so aus:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-1.png\" alt=\"\" width=\"2402\" height=\"1900\" class=\"aligncenter size-full wp-image-21956\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-1.png 2402w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-1-300x237.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-1-1024x810.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-1-768x607.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-1-1536x1215.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-1-2048x1620.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Habe es dann abgebrochen bei 32 Millionen, das Ergebnis ist auch unten in der Ausgabe-View zu sehen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2.png\" alt=\"\" width=\"2386\" height=\"2414\" class=\"aligncenter size-full wp-image-21955\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2.png 2386w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2-297x300.png 297w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2-1012x1024.png 1012w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2-768x777.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2-1518x1536.png 1518w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2-2024x2048.png 2024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2-100x100.png 100w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/goldbach-2-120x120.png 120w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Goldbachsche Vermutung ist eine der \u00e4ltesten ungel\u00f6sten Probleme in der Mathematik, die der Mathematiker Christian Goldbach 1742 in einem Brief an Leonhard Euler formulierte. Sie besagt: Jede gerade Zahl gr\u00f6\u00dfer als 2 l\u00e4sst sich als Summe zweier Primzahlen darstellen. Diese Vermutung ist in zwei Formen bekannt:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,4606,3897,5,79,2713],"tags":[1592,6021,6020,2993,6024,5850,6022,170,6025,581,6023],"class_list":["post-21954","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-crypto","category-java-programmierung","category-java","category-programmierung","category-statistik","tag-analyse","tag-goldbachsche","tag-goldbachsche-vermutung","tag-heap","tag-heap-analyse","tag-mathe","tag-primzahl","tag-rechnen","tag-statisti","tag-statistik","tag-vermutung"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/21954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21954"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/21954\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21954"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}