C# :: Aufgabe #333 :: Lösung #1
3 Lösungen

#333
Goldbachsche Vermutung (binär)
Fortgeschrittener - C#
von JKooP
- 13.10.2020 um 08:32 Uhr
Die Goldbachsche Vermutung besagt, dass jede gerade Zahl größer 2 die Summe zweier Primzahlen ist.
1. Schreibe eine Funktion/Methode, die jeweils ein mögliches Primzahlenpaar bis zur Zahl 1000 ausgibt.
Beispiele:
4 = 2 + 2 -> (2, 2)
6 = 3 + 3 -> (3, 3)
8 = 3 + 5 -> (3, 5)
Duplikate durch Vertauschung wie z.B. (3, 5) -> (5, 3) sollen verhindert werden.
2. Schreibe eine Funktion/Methode, die alle mögliche Primzahlenpaare bis zur Zahl 1000 ausgibt.
Beispiele:
10 = 3 + 7 = 5 + 5 -> [ (3, 7), (5, 3) ]
14 = 3 + 11 = 7 + 7 -> [ (3, 11), (7, 7) ]
Viel Spaß
1. Schreibe eine Funktion/Methode, die jeweils ein mögliches Primzahlenpaar bis zur Zahl 1000 ausgibt.
Beispiele:
4 = 2 + 2 -> (2, 2)
6 = 3 + 3 -> (3, 3)
8 = 3 + 5 -> (3, 5)
Duplikate durch Vertauschung wie z.B. (3, 5) -> (5, 3) sollen verhindert werden.
2. Schreibe eine Funktion/Methode, die alle mögliche Primzahlenpaare bis zur Zahl 1000 ausgibt.
Beispiele:
10 = 3 + 7 = 5 + 5 -> [ (3, 7), (5, 3) ]
14 = 3 + 11 = 7 + 7 -> [ (3, 11), (7, 7) ]
Viel Spaß
#1

von Waldgeist (2310 Punkte)
- 18.10.2020 um 13:08 Uhr

using System; using System.Collections.Generic; namespace Aufgabe_333_Goldbachse_Vermutung { internal class Program { private static void Main(string[] args) { int berechneBisZahl = 200; List<int> primzahlen = new List<int>(); int variante; Console.WriteLine("Gibt Primzahlenpaare bis zur Zahl 1000 aus\n\n"); Console.WriteLine("Variante 1: Gib nur 1 Zahlenpaar aus"); Console.WriteLine("Variante 2: Gibt alle Zahlenpaare aus"); Console.Write("Ihre Auswahl: "); variante = Convert.ToInt32(Console.ReadLine()); for (int i = 2; i <= berechneBisZahl; i++) //1 ist keine Primzahl daher i=2 { if (IstPrimzahl(i)) //prüfen ob i eine Primzahl ist { primzahlen.Add(i); //wenn ja in Liste aufnehmen } if ((i > 2) & (i % 2 == 0)) //Goldbachse Vermutung gilt nur für gerade Zahlen größer als 2 { Console.Write(i + " = "); for (int j = 0; j <= (primzahlen.Count - 1); j++) //durchläuft alle Primzahlen in Liste { if (primzahlen[j] > (i / 2)) //wenn Primzahl an index j größer als die Hälfte der zu prüfenden Zahl abbruch, verhindert doppelte Ausgabe { break; } else { for (int k = 0; k <= (primzahlen.Count - 1); k++) //durchläuft nochmals alle Primzahlen in List { if (primzahlen[j] + primzahlen[k] == i) //wenn die Summe der beiden Primzahlen die Zahl i ergibt { Console.Write($" {primzahlen[j]} + {primzahlen[k]} , "); //geben wir die Löung aus! if (variante == 1) { goto doublebreak; } } } } } Console.WriteLine(); } doublebreak:; Console.WriteLine(); } //Methode zm prüfen ob Zahl eine Primzahl ist bool IstPrimzahl(int zuprüfendeZahl) { for (int i = 2; i < zuprüfendeZahl; i++) { if (zuprüfendeZahl % i == 0) { return false; } } return true; } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1