C# :: Aufgabe #299 :: Lösung #3
3 Lösungen

#299
Zwei-Quadrate-Satz (Fermat / Girard)
Anfänger - C#
von JKooP
- 06.04.2020 um 14:49 Uhr
1. Schreibe eine Funktion bzw. Methode mit der es möglich ist zu überprüfen, ob es sich bei der eingegebenen Zahl um eine Primzahl handelt.
2. Erweitere das Programm dahingehend, dass nur die ungeraden Primzahlen ausgegeben werden, welche dem Quadrate- Satz von
Fermat entsprechen. Also der Summe zweier ganzzahliger Quadrate.
Beispiele:
5 = 1² + 2², 13 = 2² + 3², 17 = 1² + 4², …
Gegenbeispiele:
3, 7, 11, 19 funktionieren nicht, da sie durch 4 geteilt (Modulo 4) nicht den Wert 1 ergeben. Daher gibt es auch keine Lösung (4n+1).
3. Erweitere das Programm wiederum, sodass die möglichen Lösungen aus als Zahlenpaare auf dem Bildschirm ausgegeben werden.
z.B.: 13 (2,3)
Viel Spaß
2. Erweitere das Programm dahingehend, dass nur die ungeraden Primzahlen ausgegeben werden, welche dem Quadrate- Satz von
Fermat entsprechen. Also der Summe zweier ganzzahliger Quadrate.
Beispiele:
5 = 1² + 2², 13 = 2² + 3², 17 = 1² + 4², …
Gegenbeispiele:
3, 7, 11, 19 funktionieren nicht, da sie durch 4 geteilt (Modulo 4) nicht den Wert 1 ergeben. Daher gibt es auch keine Lösung (4n+1).
3. Erweitere das Programm wiederum, sodass die möglichen Lösungen aus als Zahlenpaare auf dem Bildschirm ausgegeben werden.
z.B.: 13 (2,3)
Viel Spaß
#3

von JKooP (18090 Punkte)
- 24.10.2020 um 11:03 Uhr
NET Core 3.x
C#-Code

using System; using System.Linq; using static System.Math; namespace CS_Aufgabe_299_Zwei_Quadrate_Satz_Fermat { class Program { static void Main() => Enumerable.Range(3, 1_000) .Where(x => x switch { 2 => true, var k when k > 2 => !Enumerable.Range(2, (int)Ceiling(Sqrt(x)) - 1).Any(g => x % g == 0), _ => false } && x % 4 == 1).ToList() .Select(i => new { id = i, x = (int)Sqrt(i - 1), y = (int)Sqrt(i - Pow((int)Sqrt(i - 1), 2)) }).ToList().ForEach(n => Console.WriteLine($"{n.id} -> { (n.y, n.x) }")); } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1