Problem 45: Drei-, Fünf- und Sechseckszahlen

Gesucht werden Dreieckszahlen, die gleichzeitig Fünfecks– und Sechseckszahlen sind! [das englische Original]

Als Start ist die 40755 gegeben, welches die kleinste Zahl ist, auf die die oben genannte Bedingung zutrifft. Auf dieser Basis soll die nächst größte Zahl gefunden werden.

Die Lösung dieses Problem ist wirklich trivial, da durch die Probleme 42 und 44 bereits Methoden gegeben sind, die eine beliebige Zahl prüfen, ob diese eine Dreiecks- oder Fünfeckszahl ist. Damit muss man nur über alle Sechseckszahlen iterieren und die jeweilige Zahl mit diesen Methoden prüfen. Die Iteration über Sechseckszahlen kann man leicht realisieren, wenn man die Differenz zwischen zwei aufeinander folgenden Sechseckszahlen

H(n+1) - H(n) = 4 * n + 1

als Schrittweite benutzt. Damit ergibt sich folgender Quellcode für die Suche der nächsten Zahl:

@Override
public String solve() {
   int n = 143, Hn = 40755;
 
   do{
      Hn += 4 * n + 1;
      n++;
   } while( !Mathe.isTriangleNumber( Hn ) || !Mathe.isPentagonNumber( Hn ) );
 
   return IO.i2s( Hn );
}

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

<< Problem 44 Übersicht Problem 46 >>

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: