Project Euler 130

by uwi
@see http://projecteuler.net/index.php?section=problems&id=130
♥0 | Line 44 | Modified 2009-07-22 03:33:48 | MIT License
play

ActionScript3 source code

/**
 * Copyright uwi ( http://wonderfl.net/user/uwi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/1qL2
 */

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.getTimer;
    // @see http://projecteuler.net/index.php?section=problems&id=130
    public class Euler130 extends Sprite {
        private var _tf : TextField;
  
        public function Euler130() {
            _tf = new TextField();
            _tf.width = 465;
            _tf.height = 465;
            addChild(_tf);
            
            var s : int = getTimer();
            _tf.appendText("" + solve(25) + "\n");
            var g : int = getTimer();
            _tf.appendText("" + (g - s) + " ms\n");
        }
        
        private function solve(T : int) : int
        {
            var ret : int = 0;
            var ct : int = 0;
            for(var n : int = 91;ct < T;n+=2){
                if(n % 5 == 0 || isPrime(n))continue;
                
                for(var v : int = 1, a : int = 1;v != 0;v = (int(v * 10) + 1) % n, a++);
                if((n - 1) % a == 0){
                    ct++;
                    ret += n;
                }
            }
            return ret;
        }
        
        private function isPrime(n : Number) : Boolean
        {
            if(n <= 1)return false;
            if(n % 2 == 0)return n == 2;
            
            var sq : int = Math.sqrt(n);
            for(var i : int = 3;i <= sq;i+=2){
                if(n % i == 0){
                    return false;
                }
            }
            return true;
        }
    }
}