package { import flash.display.Sprite; import flash.text.TextField; import flash.utils.getTimer; // @see http://projecteuler.net/index.php?section=problems&id= public class Euler extends Sprite { private var _tf : TextField; public function Euler() { _tf = new TextField(); _tf.width = 465; _tf.height = 465; addChild(_tf); var s : int = getTimer(); // tr(solve(13, 17)); tr(solve(123456789, 987654321)); var g : int = getTimer(); tr((g - s) + " ms"); } private function solve(A : uint, B : uint) : String { var g : uint = GCD(A, B); A /= g; B /= g; tr(A, B); var count : uint = 0; var ret : Array = []; var prev : uint = 2; var ct : uint = 0; while(A > 1 || B > 0){ if(A <= B){ B -= A; if(prev != 0){ if(ct != 0)ret.push(ct); ct = 0; prev = 0; } }else{ A -= B; if(prev != 1){ if(ct != 0)ret.push(ct); ct = 0; prev = 1; } } ct++; } if(prev != 2){ if(ct != 0)ret.push(ct); } ret.reverse(); return ret.join(','); } private function GCD(a : uint, b : uint) : uint { while(b > 0){ var c : uint = a; a = b; b = c % b; } return a; } private function tr(...o : Array) : void { _tf.appendText(o + "\n"); _tf.scrollV = _tf.maxScrollV; } } } Project Euler 175