forked from: forked from: 素数を数えて落ち着く
forked from forked from: 素数を数えて落ち着く (diff: 62)
素数カウント
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;
}
}
}