Project Euler 128
@see http://projecteuler.net/index.php?section=problems&id=128
♥0 |
Line 62 |
Modified 2009-07-31 19:44:47 |
MIT License
archived:2017-03-30 04:51:33
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/jo6r
*/
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.getTimer;
// @see http://projecteuler.net/index.php?section=problems&id=128
public class Euler128 extends Sprite {
private var _tf : TextField;
public function Euler128() {
_tf = new TextField();
_tf.width = 465;
_tf.height = 465;
addChild(_tf);
var s : int = getTimer();
t(solve(2000));
var g : int = getTimer();
t((g - s) + " ms");
}
// 1の真上の系列とその右下の系列のみ調べればよい。
private function solve(M : int) : Number
{
var ct : int = 1;
var ret : Number;
var r : int;
for(r = 1;r < 100000;r++){
if(
r > 1 &&
isPrime(12 * r + 5) &&
isPrime(6 * r + 1) &&
isPrime(6 * r - 1)
){
ct++;
ret = 3 * r * r - 3 * r + 2;
// t(ret);
if(ct == M)return ret;
}
if(
isPrime(12 * r - 7) &&
isPrime(6 * r + 5) &&
isPrime(6 * r - 1)
){
ct++;
ret = 3 * r * r + 3 * r + 1;
// t(ret);
if(ct == M)return ret;
}
}
return 0;
}
private function isPrime(n : Number) : Boolean
{
if(n <= 1)return false;
if(n % 2 == 0)return n == 2;
var sq : int = Math.sqrt(n);
for(var i : int = 3;i <= sq;i+=2){
if(n % i == 0){
return false;
}
}
return true;
}
private function t(o : *) : void
{
_tf.appendText("" + o + "\n");
}
}
}