C# :: Aufgabe #171 :: Lösung #2
4 Lösungen
#171
Symmetrische Primzahlen
Anfänger - C#
von hollst
- 03.04.2017 um 13:55 Uhr
Wieviele Primzahlen P < 1.000.000 sind rückwärts gelesen auch eine Primzahl, jedoch ungleich sich selbst?
Anmerkung: Die (Prim)zahlen 2, 3, 5, 7, 11 erfüllen nicht die Bedingungen (sind rückwärts gelesen sich selbst gleich),
als erste erfüllt die 13 die Bedingungen.
Anmerkung: Die (Prim)zahlen 2, 3, 5, 7, 11 erfüllen nicht die Bedingungen (sind rückwärts gelesen sich selbst gleich),
als erste erfüllt die 13 die Bedingungen.
#2
von hollst (13980 Punkte)
- 19.04.2017 um 09:08 Uhr
using System;
using static System.Console;
/*
Wieviel Primzahlen P < 1.000.000 sind rückwärtz gelesen auch eine Primzahl, jedoch ungleich sich selbst?
Anmerkung: Die Primzahlen 2, 3, 5, 7, 11 erfüllen nicht die Bedingung (sind rückwärtz gelesen sich selbst gleich),
als erste erfüllt es die 13.
*/
namespace backprime{
class Program {
static string LZ = " ";
static void Main() {
int maxi = (int)1E+6;
("maxi: " + maxi.ToString()).MessageLine();
int counter = 0, counter_prime = 0;
for (var i = 2; i < maxi; i++)
if (isPrime(i)) {
counter_prime++;
int b = backward(i);
if (b != i && isPrime(b)) {
(i.ToString("n0") + LZ + b.ToString("n0")).MessageLine();
counter++;
}
}
(counter.ToString("n0") + " of " + counter_prime.ToString("n0") +
" are not identical forward and backward primes.").MessageLine();
"ready".EndMessage();
}
public static bool isPrime(int number) {
if (number == 1) return false;
if (number == 2) return true;
var boundary = (int)Math.Floor(Math.Sqrt(number));
for (int i = 2; i <= boundary; ++i)
if (number % i == 0) return false;
return true;
}
public static int backward(int number) {
if (number < 10)
return number;
int result = 0;
int pot = (int)(Math.Log10(number));
int ipot = 1;
for (var i = 0; i < pot; i++)
ipot *= 10;
while (ipot > 1) {
int zehner = 10 * (number / 10); ;
result += ipot * (number % zehner);
number /= 10;
ipot /= 10;
}
return result += number;
}
}
static class MyExtensions {
public static void MessageLine(this string s)
{ WriteLine(s); }
public static void EndMessage(this string s)
{ WriteLine(s); ReadKey(); }
}
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
