Project Euler 179

by uwi
♥0 | Line 51 | Modified 2009-07-13 03:49:39 | 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/6RRa
 */

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.*;
    public class Euler179 extends Sprite {
        private var _tf : TextField;
        private var _primes : Vector.<int>;
  
        public function Euler179() {
            _tf = new TextField();
            _tf.width = 465;
            _tf.height = 465;
            addChild(_tf);
            
            var s : int = getTimer();
            _primes = enumPrimes(10000);
            
            _tf.appendText(solve().toString() + "\n");
            var g : int = getTimer();
            _tf.appendText((g - s).toString() + " ms");
        }
        
        private function solve() : int
        {
            var prev : int = 0;
            var ret : int = 0;
            for(var i : int = 1;i < 10000;i++){
                var cur : int = d(i);
                if(cur == prev)ret++;
                prev = cur;
            }
            return ret;
        }
        
        private function d(n : int) : int
        {
            var ret : int = 1;
//            for(var m : int = 2;n > 1;m++){
            for each(var m : int in _primes){
                if(n == 1)break;
                for(var i : int = 1;n % m == 0;n /= m,i++);
                ret *= i;
            }
            return ret;
        }
        
        private function enumPrimes(sup : int) : Vector.<int>
        {
            var ret : Vector.<int> = new Vector.<int>();
            for(var i : int = 2;i <= sup;i++){
                var s : int = Math.sqrt(sup);
                for(var j : int = 2;j <= s && i % s != 0;j++);
                if(j == s + 1)ret.push(i);
            }
            return ret;
        }
    }
}