forked from: forked from: 素数を数えて落ち着く

by tepe forked from forked from: 素数を数えて落ち着く (diff: 62)
素数カウント
♥0 | Line 42 | Modified 2014-11-22 12:08:00 | MIT License
play

ActionScript3 source code

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

// forked from tepe's forked from: 素数を数えて落ち着く
// forked from keno42's 素数を数えて落ち着く
// 素数カウント
package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.utils.*;
    public class FlashTest extends Sprite {
        
        private var tf:TextField = new TextField();        
        public function FlashTest() {

            addChild(tf);
            tf.height = 465;
            tf.width = 465;
            tf.multiline=true;
            
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        
        //メインループ
        private var cnt:int=0;
        private function onEnterFrame(e:Event=null):void{
            
            cnt++;
            if(cnt%15 != 0)return;//処理速度調整
            
            while(!func()){}//次の素数が現れるまでループ
            
            draw();
        }
        
        
        private function draw():void{
            var str:String = ""; 
            var len:int = 30;
            if(list.length<30)len=list.length;
            for(var i:int=list.length-len;i<list.length;i++){                
                str += "prime["+i.toString()+"] = "+list[i].toString()+"\n";
            }
            tf.text = str;
        }
        

        //素数判定 
        private var list:Vector.<uint> = new Vector.<uint>();//素数リスト
        private var n:uint=1;//判定する整数
        private function func():Boolean{
            n++;
            //リスト内の素数に引っかからなければ追加
            for(var i:uint=0;i<list.length;i++){
                //index が 素数の倍数なら終了
                if(0 == n % list[i] )return false;
            }
            list.push(n);
            return true;
        }

        


    }
}