Gesucht wird die kleinste Dreieckszahl, die mehr als 500 ganzzahlige Teiler hat! [das englische Original]
Die Lösung dieses Problem ist recht trivial mit 2 Schleifen geschrieben. Es ist erstaunlich, wie schnell man die gesuchte Lösung findet:
@Override public String solve() { long divs, upper, lower; long number = 1, sum = 0; do { sum += number++; divs = 2; lower = 2; upper = ( int ) sum / lower; IO.debug( "check " + sum + ": 1" ); while( lower < upper ) { if( sum % lower == 0 ) { upper = sum / lower; divs += ( lower == upper ) ? 1 : 2; IO.debug( ", " + lower + ", " + upper ); } lower++; } IO.debugln( ", " + sum + " -> " + divs + " divisors" ); }while( divs < 500 ); return IO.l2s( sum ); }
Den vollständigen Quellcode der Klasse für die Lösung des Problems 12 kann man sich hier anschauen!
<< Problem 11 | Übersicht | Problem 13 >> |