Project Euler #003
forked from Project Euler #002 (diff: 22)
ActionScript3 source code
/**
* Copyright hycro ( http://wonderfl.net/user/hycro )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/yFvh
*/
package {
import flash.display.Sprite;
import flash.text.TextField;
public class ProjectEuler extends Sprite {
private var _textField:TextField;
public function ProjectEuler() {
initialize();
writeAnswer(new Problem003);
}
private function writeAnswer(problem:AbstructProblem):void {
var answer:String = problem.getAnswer();
_textField.appendText(answer);
}
private function initialize():void {
_textField = new TextField();
_textField.width = stage.stageWidth;
_textField.height = stage.stageHeight;
addChild(_textField);
}
}
}
class AbstructProblem {
final public function getAnswer():String {
var answer:String;
try {
answer = solve().toString();
} catch (err:Error) {
answer = err.name + " : " + err.message;
}
return answer;
}
protected function solve():Number {
throw new Error("unsolved");
}
}
class Problem003 extends AbstructProblem {
override protected function solve():Number {
var answer:Number = 0;
var sequence:Vector.<Number> = primeFactorization(600851475143);
for each (var n:Number in sequence) {
if (n > answer) {
answer = n;
}
}
return answer;
}
private function primeFactorization(n:Number):Vector.<Number> {
var prime:Number = 2;
var sequence:Vector.<Number> = new Vector.<Number>();
while (n != 1) {
while (n % prime != 0) {
prime++;
}
sequence.push(prime);
n /= prime;
}
return sequence;
}
}