Project Euler 179
♥0 |
Line 51 |
Modified 2009-07-13 03:49:39 |
MIT License
archived:2017-03-30 04:55:03
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;
}
}
}