C# :: Aufgabe #367 :: Lösung #3

3 Lösungen Lösungen öffentlich
#367

Palindromische Primzahlen

Anfänger - C# von hollst - 29.03.2021 um 21:12 Uhr
Man erzeuge eine Liste aller Primzahle <= 1 Milliarde (1E+9), die in dezimaler Präsentation umgekehrt gelesen ebenfalls eine Primzahl sind (Palindromische Primzahlen). Z. B. 13; 31 ist ebenfalls Primzahl.

Viel Spaß!
#3
2 Kommentare
1x
vote_ok
von JKooP (18090 Punkte) - 31.03.2021 um 09:51 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

GetPrimeList(1000).ForEach(x => Console.WriteLine(x));

static List<(int prime, int primeRev)> GetPrimeList(int max)
{
    List<(int, int)> lst = new();
    for (int i = 10; i <= max; i++)
    {
        if (IsPrime(i))
        {
            var pr = GetRevNum(i);
            if (IsPrime(pr))
                lst.Add((i, pr));
        }
    }
    return lst;
}

static bool IsPrime(int n) => n > 1 && Enumerable.Range(1, n).Where(x => n % x == 0).SequenceEqual(new[] { 1, n });

static int GetRevNum(int num)
{
    var rev = 0;
    while (num != 0)
    {
        rev *= 10;
        rev += (num % 10);
        num /= 10;
    }
    return rev;
}

Kommentare:

hollst

Punkte: 13980

761 Aufgaben
132 Lösungen
117 Kommentare

#1
03.04.2021 um 20:20 Uhr
Sehr schön und kompakt finde ich

Quellcode ausblenden C#-Code
static int GetRevNum(int num)
,

zu kompakt ist wohl

Quellcode ausblenden C#-Code
static int GetRevNum(int num)
,

bei
Quellcode ausblenden C#-Code
max = (int)1e+3
geht es noch, aber für
Quellcode ausblenden C#-Code
max = (int)1e+9
(laut Aufgabenstellung) würde sicher bis Weihnachten kein Ergebnis vorliegen (nue eine horrende Stromrechnung).
post_arrow
675 0

hollst

Punkte: 13980

761 Aufgaben
132 Lösungen
117 Kommentare

#2
20.04.2021 um 11:05 Uhr
sorry, ich meinte

zu kompakt ist wohl

Quellcode ausblenden C#-Code
static bool IsPrime(int n) => n > 1 && Enumerable.Range(1, n).Where(x => n % x == 0).SequenceEqual(new[] { 1, n });
post_arrow
688 0
Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben