EmEditorみんなでまとめサイト

素数の計算

最終更新:

emeditor

- view
だれでも歓迎! 編集

素数の計算

フィボナッチ数の計算に引き続いて、100000以下の素数の個数を数える マクロで処理時間を計測してみました。

前回同様、マクロの起動時間のページに貼り付けてある MacroBenchプラグインを使用しました。

今回は、配列の処理と四則の演算が主となります。

使用したマクロのソースコードは以下の通りです。*1

prime.jsee

M = 100000;
primes = [2, 3];
for (n = 5; n < M; n += 2) {
	for (i = 1; i < primes.length; i++) {
		d = primes[i];
		if (n % d == 0) {
			break;
		}
		if (n < d * d) {
			primes.push(n);
			break;
		}
	}
}
Window.document.writeln(M + ": " + primes.length);

prime.plee

#language="PerlScript"
$M = 100000;
@primes = (2, 3);
for ($n = 5; $n < $M; $n += 2) {
	for ($i = 1; $i < scalar(@primes); $i++) {
		$d = $primes[$i];
		if ($n % $d == 0) {
			last;
		}
		if ($n < $d * $d) {
			push(@primes, $n);
			last;
		}
	}
}
$Window->document->writeln($M . ": " . scalar(@primes));

prime.pyee

#language="Python"
M = 100000
primes = [2, 3]
n = 5
while n < M:
	i = 1
	while i < len(primes):
		d = primes[i]
		if n % d == 0:
			break
		if n < d * d:
			primes.append(n)
			break
		i += 1
	n += 2
Window.document.writeln(str(M) + ": " + str(len(primes)))


実行結果は以下の通りでした。

*prime.jseeprime.pleeprime.pyee
1回目509425945969
2回目500018441953
3回目489018591984
4回目489118591969
5回目493818601953
6回目490618752000
7回目490618591969
8回目492218441953
9回目484318751984
10回目473518441953

文責: とらめ

ウィキ募集バナー
注釈

*1 VBScriptは、Redimを使わずに配列の末尾に要素を追加する方法が分からなかったため書きませんでした