Euler 7

by enecre forked from Euler 4 (diff: 45)
♥0 | Line 58 | Modified 2010-10-07 15:56:01 | MIT License
play

ActionScript3 source code

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

// forked from enecre's Euler 4
// forked from enecre's Euler3
// forked from enecre's forked from: Euler6
// forked from enecre's Euler6
// forked from enecre's Euler2
package {
    import flash.events.Event;
    import flash.text.TextField;
    import flash.display.Sprite;
    public class Euler extends Sprite {
        
        private var tf:TextField = new TextField();
        private var tf2:TextField = new TextField();
        
        public function Euler() {
            // write as3 code here..
            tf.height = 465;
            addChild(tf);
            tf2.x = 200;
            tf2.height = 465;
            addChild(tf2);
            init();
        }
        
        private var n:uint = 2;
        private var i:int = 0;
        private var map:Vector.<Boolean>;
        
        public function init():void{
            map = new Vector.<Boolean>(200000);
            tr(map[101] == null);
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        
        private function onEnterFrame(e:Event):void{
            if(map[n] != true){
            if(isPrime(n)){
                var t:int = n * n;
                while(t < 200000){
                    map[t] = true;
                    t += n;
                }
                i++;
                tr(n, i);
            }
            if(i == 10001){
                tr2(n);
                removeEventListener(Event.ENTER_FRAME, onEnterFrame);
            }
            }
            n++;
        }
        
        private function isPrime(n:uint):Boolean{
            var l:int = int(Math.sqrt(n));
            for(var i:int = 2; i <= l; i++){
                if(n % i == 0)return false;
            }
            return true;

        }


        private function tr2(...o:Array):void{
            tf2.appendText(o + "\n");
            tf2.scrollV = tf2.maxScrollV;
        }

        
        private function tr(...o:Array):void{
            tf.appendText(o + "\n");
            tf.scrollV = tf.maxScrollV;
        }

    }
}

Forked