Problem 41: Pandigitale Primzahl

Gesucht wird die größte pandigitale Primzahl! [das englische Original]

Da ich für die Erzeugung von Primzahlen schon seit geraumer Zeit eine eigene Klasse in meinem Framework habe, die ein Sieb des Eratosthenes implementiert, musste ich als nur die Frage der Obergrenze klären.

Eine pandigitale Zahl kann offensichtlich maximal 9.876.543.210 sein. Dabei fällt aber auf, dass eine solche Zahl immer eine Quersumme von 45 hat und damit auch immer durch 3 teilbar ist. Die nächst kleinere Variante 876.543.210 hat als Quersumme immer 36 und ist damit ebenfalls immer durch 3 teilbar. Damit ist klar, dass ein maximales Ergebnis im Bereich von 2 bis 76.543.210 zu suchen ist.

Da seit dem Problem 32 eine Methode zur Prüfung einer pandigitalen Zahl vorhanden ist, gestaltet sich die Lösung des Problems als sehr einfach:

 

@Override
public String solve() {
   Sieve sieve = new Sieve( 7654321 );
   int max = 0;
 
   for( int next : sieve ) {
      String n = Integer.toString( next );
      if( Mathe.isPandigital( n, n.length() ) ) {
         IO.infoln( "found new max: " + next );
         max = next;
      }
   }
 
   return IO.i2s( max );
}

Den vollständigen Quellcode der Klasse für die Lösung des Problems 41 kann man sich hier anschauen!

<< Problem 40 Übersicht Problem 42 >>

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: