You are here: Home Blog キミならどう書く 2.0 - ROUND 1 -

Personal tools

Document Actions

キミならどう書く 2.0 - ROUND 1 -

by takano32 posted at 2006-06-16 18:00 last modified 2006-06-27 00:57
LL Ring の前哨戦として「キミならどう書く 2.0」の開催です!

今回は読者も参加しての大乱闘!!

お題は「100までの整数から素数を列挙せよ」です.

ぜひ,みなさんの解答をコメントやトラックバックでお寄せください!

解答の締切は6月26日(月)とします.締切後には投票による人気の集計を行います.

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by mrwk at 2006-06-16 18:30

print "2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97";

問題: これを期待通りに実行できる言語をあげよ。
解答例: Perl, Ruby, Python, AWK

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by Anonymous User at 2006-06-16 18:47

def primegen(maximum):
v = range(2, maximum)
while v:
p = v[0]
v = filter(int(p).__rmod__, v)
yield p

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by Anonymous User at 2006-06-16 18:50

# grrr, 圧倒的にPythonに不利な設定ですね!
def primegen(maximum):
 v = range(2, maximum)
 while v:
  p = v[0]
  v = filter(int(p).__rmod__, v)
  yield p

Re: キミならどう書く 2.0 - ROUND 1 -

Posted by Dubhead at 2006-06-16 19:02

Pythonで、スライスと集合をむりやり使ってみる

MAX = 100 + 1

multiples = []
for n in range(2, MAX):
  multiples.extend(range(0, MAX)[2*n:MAX:n])
print set(range(2, MAX)) - set(multiples)

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by Anonymous User at 2006-06-16 23:57

Pythonです。。
[p for p in range(2,100) if 0 not in [p%d for d in range(2,p)]]

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by nobsun at 2006-06-17 01:58

sieve (p:ps) = p:sieve [q|q<-ps,q`mod`p/=0]
take 100 $ sieve [2..]

100までの素数@C++テンプレート

Posted by MZK at 2006-06-17 04:01

面白そうなのでついカッとなってC++テンプレートで書いてみました。
コードが長くなってしまったので自分のページの↓のURLに置いておきます。
http://www.3jikai.to/mzk/junk/prime.cpp

C++はLLじゃないと言われそうだけど、
実行がLightWeightなバイナリを吐けるLanguage
ということで勘弁してください。

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by shiro at 2006-06-17 04:37

Gaucheで。

(use srfi-42)
(list-ec(: n 2 101)(if(not(any?-ec(: j 2 n)(zero?(modulo n j)))))n)

Oracle の PL/SQL でやってみました。

Posted by はやまった at 2006-06-17 08:58

トラックバックできないので、コメントにて失礼

http://nyaos.org/d/?p=(2006.06.17)

あえて、LL でない言語で挑戦。その分、ひねり成分不足

x86アセンブラ版

Posted by koguro at 2006-06-17 12:57

ある意味最も軽量な言語であるアセンブラで書いてみました。以下のURLからソースを取得できます(Linux, FreeBSD, MacOSXで確認)。
http://homepage.mac.com/naoki.koguro/prog/prime.s

なお、コンパイルは
% gcc -o prime prime.s
として、実行確認はgdbを使って
% gdb prime
(gdb) break b
(gdb) run
(gdb) x/100bd &amp;prime
としてください。

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by Rocco at 2006-06-18 00:29

小飼さんのところの以下のページを参考に awk で記述してみました。
http://blog.livedoor.jp/dankogai/archives/50534572.html
長いので、以下の URL に速度比較も含めて書きました。
http://gauc.no-ip.org/wiki.cgi/private?page=Blog%2F2006%2D6%2D17

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by Anonymous User at 2006-06-18 05:58

昔ながらのBASICで。
すぐに使える実行環境が無いので机上デバッグしかしていません。
10 'SAVE "PRIME.BAS"
20 DIM A(100):I=2
30 FOR P=I*2 TO 100 STEP I:A(P)=1:NEXT P
40 I=I+1:IF I=101 THEN GOTO 60
50 IF A(I)=0 THEN GOTO 30 ELSE GOTO 40
60 FOR I=2 TO 100
70 IF A(I)=0 THEN PRINT I," ";
80 NEXT I

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by みずしま at 2006-06-18 18:46

間違って、トラックバックを2回送ってしまいました。すみません。

shスクリプト

Posted by maeda at 2006-06-19 01:18
#!/bin/sh

filter() { read p && ( echo $p; awk "\$1 % $p != 0" | filter ) }

seq 2 100 | filter

#seqやawkを使うのはズルかもしれませんが、どうせshだとexprやtestも外部コマンドなわけだし...
#zshやbashの拡張機能を使うのと同程度のズルですよね。

効率無視

Posted by [1..100]>>=pen at 2006-06-19 16:59

filter (\x -> (product [1..x-1]+1) `mod` x == 0) [2..100]

なるほど!じゃあPythonで

Posted by Anonymous User at 2006-06-19 22:52

filter(lambda i:reduce(lambda x,y: x*(i%y), range(2,i), 1), range(2, 100))

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by NANRI at 2006-06-21 23:45

lispの解が少ないので、Common Lispで。
xyzzyでも動作します。
(defun loop-generate-primes (n)
"ループ版"
(let ((prime '()))
(push 2 prime)
(do ((x 3 (+ x 2)))
((> x n))
(if (dolist (i prime t) (if (zerop (rem x i)) (return nil)))
(push x prime)))
(nreverse prime)))

(defun recursive-generate-primes (limit)
"再帰版"
(labels ((check (x prime)
(cond ((endp prime)
t)
((zerop (rem x (car prime)))
nil)
(t
(check x (cdr prime)))))
(main (n x prime)
(cond ((> x n)
(nreverse prime))
((check x prime)
(main n (+ x 2) (cons x prime)))
(t
(main n (+ x 2) prime)))))
(main limit 3 (list 2))))

ワンライナー@シェルスクリプト

Posted by Anonymous User at 2006-06-22 00:02

エラトステネスの篩のようなもので非効率的に素数を列挙します
n=100;for i in `seq 2 $n`;do for j in `seq $i $i $n`;do echo $j;done;done|sort -n|uniq -c|egrep '^ *1[^0-9]'|sed 's/.*[ \t]//'|xargs printf '%d ';echo ''

効率無視PHP版

Posted by [1..100]>>=pen at 2006-06-22 12:19

効率無視 Haskell版と同じくウィルソンの定理を使った PHP版
for ($i = 2; $i <= 100; $i++) if (gmp_mod(gmp_fact($i-1), $i) == $i-1) echo "$i\n";

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by Takumi Iino at 2006-06-23 02:04

gaucheの遅延ストリームでオーソドックスふるいをつかって。
長い。
(use util.stream)
(define ones (stream-cons 1 ones))
(define (add-streams s1 s2) (stream-map + s1 s2))
(define integer (stream-cons 1 (add-streams ones integer)))
(define prime-stream
(let loop ((primes (stream-cdr integer)))
(stream-cons (stream-car primes)
(loop
(stream-filter
(lambda (x)
(not (= (remainder x (stream-car primes)) 0)))
primes)))))
(let loop ((stream prime-stream))
(if (> 100 (stream-car stream))
(cons (stream-car stream) (loop (stream-cdr stream)))
'()))

Re:キミならどう書く 2.0 - ROUND 1 -

Posted by Anonymous User at 2006-06-23 10:17

javaで作成してみました。
public static void main(String[] args) {
int[] s = new int[100];
int x = 0;
boolean bool = false;
for(int i = 1; i <= 100; i ++) {
bool = false;
for (int k = 0; k < x; k++) {
if (i % s[k] == 0 && s[k] != 1) {
bool = true;
break;
}
}
if (!bool) {
s[x++] = i;
System.out.println(i);
}
}
}

シェルで 1-liner

Posted by macks at 2006-06-23 23:43

seq 2 100 | factor | awk 'NF == 2 {print $2}'
# 短さで勝負。GNU coreutils + awk を使用。

マイナー過ぎるか

Posted by Anonymous User at 2006-06-26 18:04

-- Lua
a={}
for i = 2, math.sqrt(100), 1 do
for j = i + i, 99, i do
a[j] = 1
end
end
for i = 2, 99, 1 do
if not a[i] then
print(i)
end
end

m4

Posted by yamaya at 2006-06-26 23:52

m4 で書いてみたです。
http://ya.maya.st/d/200606c.html#s20060626_1

Pythonのジェネレータを使って素数を求める

Posted by TRIVIAL TECHNOLOGIES 2.0 at 2006-06-16 18:53
Python 2.3から(だったっけな?)導入された「ジェネレータ関数」を使って素数を求めてみましょう。 >>> def primegen(x=2): # 素数を返すジェネレータ関数を定義 ... while True:...

perl - 100までの素数

Posted by 404 Blog Not Found at 2006-06-16 22:02
なに前哨戦とな? キミならどう書く 2.0 - ROUND 1 - ? Lightweight Language Ringお題は「100までの整数から素数を列挙せよ」です.

[プログラミング]Concurrent Clean : L.L.Ring : 『キミならどう書く 2.0 - ROUND 1 -』 : 100までの素数を列挙

Posted by lethevert is a programmer at 2006-06-16 23:46
module Primes import StdEnv, OptEnv Start = takeWhile ((>=) 100) primes primes = ps [2..] where ps [n:nr] = [n: ps $ filter (\x = (x rem n) <> 0) nr] たしか、もっとスマートな方法があったような気がするんだけど・・・

エラトステネスのふるい @ Ruby

Posted by 32nd diary at 2006-06-16 23:48
コンセプトは「人と同じ動き」です. 人が紙に書いてエラトステネスのふるいで解いていくのと同じ流れのコードとなっています.

キミならどう書く 2.0 - ROUND 1 -

Posted by mputの日記。 at 2006-06-17 00:26
100までではちょっと上が小さすぎる。「最初の1,000,000個」とかに変更すべき。ここまで大きければHaskellでも素朴なsieveでは表示できなくなる(sieveはやがてメモリを喰い尽くして止まる。やってみればわかる)ので、腕の見せ所となる。

100までの素数@ruby

Posted by 青方偏移 at 2006-06-17 00:52
なにやら面白そうな企画が開催されているようなので、乱入。「100までの素数を列挙するコードを書くべし」だそうです。とりあえずRubyを使って書いてみました。 def generate_prime_numbers(max) (2..max).inject([]) do |list, n| append_if_prime(list, n) end e..

「100までの整数から素数を列挙せよ」

Posted by znzの日記 at 2006-06-17 02:02
http://ll.jus.or.jp/2006/blog/doukaku1 に「キミならどう書く 2.0 - ROUND 1 -」として「100までの整数から素数を列挙せよ」というお題が出ている。 ちゃんと計算するのは面倒なので「0ruby -r mathn -e '(1..100).select{|x|x.prime_division.size == 1}.join(" ").display'」で。 最初は1からではなく0からにしていたら、「0.prime_division」がかえってこなくて悩んでし ...

素数探索@Ruby

Posted by はてなるせだいあり at 2006-06-17 03:44
キミならどう書く 2.0 - ROUND 1 -にて、「100までの整数から素数を列挙せよ」とのお題。 (2..100).select{|i|(2...i).all?{|j|i%j!=0}} とりあえず効率無視で短さ重視。 (2..100).select{|i|/^(11+)\1+$/!~'1'*i} と思ったら、perl - 100までの素数 にある

[Squeak][Smalltalk] 100までの整数から素数を列挙せよ…を Squeak の Smalltalk で

Posted by sumim’s smalltalking-tos at 2006-06-17 03:49
「100までの整数から素数を列挙せよ」:キミならどう書く 2.0 - ROUND 1 - ― Lightweight Language Ring まずはお約束から。 Integer primesUpTo: 100 #(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97) 愚直に。 (2 to: 10) collect: [:nn | (2

エラトステネス/フェルマーテスト

Posted by FlexFrank at 2006-06-17 04:26
LL Gong キミならどう書く 2.0 - ROUND 1 - 100までの素数列挙. 正攻法だとエラトステネスの篩いを使ってこんな感じ.

LLR2006 - 1,000,000(番目|まで)の素数

Posted by 404 Blog Not Found at 2006-06-17 07:15
キミならどう書く 2.0 - ROUND 1 - ? Lightweight Language Ringお題は「100までの整数から素数を列挙せよ」です. に対して mputの日記。 - キミならどう書く 2.0 - ROUND 1 -100までではちょっと上が小さすぎる。「最初の1,000,000個」とかに変更すべき。ここまで....

[LL]キミならどう書く 2.0 - ROUND 1 6月26日(月)締切

Posted by はてなの日記 Akira51 at 2006-06-17 08:43
いい感じでRSSからお題が送られてきました。(この記事は6/25(日)まで更新し続けます。) LL Ring の前哨戦として「キミならどう書く 2.0」の開催 お題は「100までの整数から素数を列挙せよ」です. 解答の締切は6月26日(月)とします.締切後には投票による人気の集計を行

Ruby標準添付ライブラリ - LL Ring

Posted by ratio - rational - irrational at 2006-06-17 08:47
まずは、日本Rubyカンファレンス2006でネタにした関係上、お約束のやつだけ...

[ruby] キミならどう書く 2.0 - ROUND 1 -

Posted by moroの日記 at 2006-06-17 10:13
お題は「100までの整数から素数を列挙せよ」。 via Yuguiさんとこ Rails厨の回答。 #!/usr/bin/env ruby require_gem 'activesupport' require 'active_support' class Fixnum def prime? return false if 1 == self (2..self - 1).all?{|i| (self % i) &#6

[PRO] Io で 100 までの素数を列挙

Posted by SiroKuroPage at 2006-06-17 12:33
お題は「100までの整数から素数を列挙せよ」です. ぜひ,みなさんの解答をコメントやトラックバックでお寄せください! キミならどう書く 2.0 - ROUND 1 - ? Lightweight Language Ring との事なので、力の差にしりごみしながらも参戦してみるテスト。 折角なので今勉強中

[OCaml] キミならどう書く 2.0 - ROUND 1 - &mdash; Lightweight Language Ring

Posted by soutaroにっき at 2006-06-17 12:34
お題は「100までの整数から素数を列挙せよ」です. MLならループ使ってなんぼでしょう。 愚直に。 # exception NotPrime;; exception NotPrime # begin for i = 2 to 100 do try for j = 2 to i / 2 do if i mod j = 0 then raise NotPrime done; Printf.printf "%d &q

[programming] お題は「100までの整数から素数を列挙せよ」

http://ll.jus.or.jp/2006/blog/doukaku1 にて,「キミならどう書く 2.0」というプログラミングスキルを競うコンテストが開催されているみたい.お題は「100までの整数から素数を列挙せよ」.面白そう. とはいえ,100までの素数なんて25個しかないのだから,いちいち計算せ

キミならどう書く 2.0 - ROUND 1 -

Posted by 本当にオタクでも山へ登れるのか? at 2006-06-17 16:02
コンセプトは「人と同じ動き」です.人が紙に書いてエラトステネスのふるいで解いていくのと同じ流れのコードとなっています. エラトステネスのふるい @ Ruby - 32nd diary (2006-06-16) コンセプトは「人と同じ動き」です.人がググって検索上位のサイトを見てみるのと同

[Smalltalk][OOPL] 100までの整数から素数を列挙せよ…を Smalltalk-76 で

Posted by sumim’s smalltalking-tos at 2006-06-17 16:16
1977 年から、時空を越えてのエントリー。w ”Smalltalk-76” limit ← 100. primes ← #() asStream. primes next ← 2. for% i from: (3 to: limit by: 2) do% [ isprime ← true. for% prime from: primes contents do% [ i ¥ prime = 0 ? [isprime ← false]]. ispri

[Ruby] キミならどう書く 2.0 - ROUND 1 -

Posted by Hexaの日記 at 2006-06-17 16:27
LL Ringの前哨戦の「お題」がでていたので, 昔,勉強したフェルマーテストを使って,やってみました. a = 2 max = 100 range = Range.new(a, max) range.each{|num| if(a == num) then print num, " " elsif(1 == (a **(num - 1) % num)) then print nu

100 までの素数を列挙 in JavaScript

Posted by Days on the Moon at 2006-06-17 16:40
「キミならどう書く 2.0 - ROUND 1 - ― Lightweight Language Ring」より。せっかくなので JavaScript 1.7 の新機能である Generator を使って書いてみる。 function countUp(n) { n = n || 0; while (true) yield

素数列をつくろう

Posted by 他人のHaskell日記 at 2006-06-17 21:42
http://ll.jus.or.jp/2006/blog/doukaku1 面白そうなのでミラーテストバージョンを書いてみました http://www.faireal.net/articles/7/03/#d30129 このサイトを参考にしました。 実行結果

[プログラミング]Concurrent Clean : L.L.Ring : キミならどう書く 2.0 - ROUND 1 - 番外編:1,000,000個めの素数

Posted by lethevert is a programmer at 2006-06-17 22:10
チューニングとはCleanのための言葉です!! かどうかは知りませんが、Cleanは、Haskellとは違ってプログラムを効率化するテクニックが多いので、数が多くなっても平気。 もともとの関数定義はこれ。 nth_prime n = primes !! n primes = map hd $ iterate f [2..] where f

[PRO] WhiteSpace でも 100 までの素数を列挙

Posted by SiroKuroPage at 2006-06-18 01:23
「100までの整数から素数を列挙せよ」から色々な人のコードを見ていたら、 brainfuckやwhitespaceで作る人が出てこないかな. 他人のHaskell日記 なんてことを言っている人を発見。 了解です。できましたヽ(≧∀≦)ノ prime.ws 実行結果 $ perl whitespace.pl prime.ws 2 3 5

シェルで素数の列挙

Posted by memolog at 2006-06-18 03:59
こ、これはシェルでやるしかないでしょうってことでやってみた。

[IT]キミならどう書く 2.0 ROUND 1

Posted by kkkkkkkk at 2006-06-18 05:54
お題は「100までの整数から素数を列挙せよ」です. キミならどう書く 2.0 - ROUND 1 - Lightweight Language Ring 世のビジネスシーンで最も多用されているアプリケーションの1つであるExcelのVBAマクロで書いてみよう。 Sub PrimeNum() Dim SUP As Integer: SUP = Cells(1,

[LL]キミならどう書く 2.0 - ROUND 1 6月26日(月)締切

Posted by はてなの日記 Akira51 at 2006-06-18 11:32
いい感じでRSSからお題が送られてきました。(この記事は6/25(日)まで更新し続けます。) LL Ring の前哨戦として「キミならどう書く 2.0」の開催 お題は「100までの整数から素数を列挙せよ」です. 解答の締切は6月26日(月)とします.締切後には投票による人気の集計を行

[Squeak][Smalltalk] 100までの整数から素数を列挙せよ…を Smalltalk-72 で

Posted by sumim’s smalltalking-tos at 2006-06-18 13:28
悪ノリして、今度は 1974 年からのエントリー。 "limit _ 100. "primes _ stream of vector 1. primes _ 2. for i _ 3 to limit by 2 ("isprime _ true. "vec _ primes contents. for idx to vec length ("prime _ vec[idx]. (i mod prime) = 0? (

[プログラミング]Concurrent Clean : L.L.Ring : キミならどう書く 2.0 - ROUND 1 - 高速化編

Posted by lethevert is a programmer at 2006-06-18 14:24
id:lethevert:20060616:p2 : 素直な回答 id:lethevert:20060617:p1 : 頭部非ボックス化正格リスト id:lethevert:20060617:p2 : gccとの速度比較 ここまで、コードの外形には触れずにいましたが、コードの外形を変えて高速化してみましょう。 Start = last $ takeWhile ((&#6

javascriptで素数生成

Posted by Marble Screw at 2006-06-18 16:25
これをJavascriptで。 [http://ll.jus.or.jp/2006/blog/doukaku1:title] *アルゴリズム [g:素数判定 アルゴリズム]で探してみたけど、技術

[Groovy]キミならどう書く 2.0 - ROUND 1 -

Posted by Onion開発日記 at 2006-06-18 18:40
Groovyで書いてみた。まずはこんな感じのコード。 println ((2..100).findAll{x->(2..x/2).every{x%it!=0}}) しかし、実行してみると、何故か2が含まれない。 [3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79 , 83, 89, 97] たぶん、範囲式の使い方が原因だろうということで、ちょっと調べてみる。 (2..1).each{println it} => 2 1 どうやら、(x .. y)で、x>yの場合は、空の範囲を生成するのではなく、x, x-1,x-2,...,yの範囲を生成するようだ。しかも、Groovyの公式ページのドキュメントを見ても、この仕様に関するきちんとした記述が見当たらないorz 仕方無いので、内側のループは2..x/2ではなく、2...xにすることにした。 println ((2..100).findAll{x->(2...x).every{x%it!=0}}) 今度は、ちゃんと2も出力されるようになった。 [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

[Groovy]キミならどう書く 2.0 - ROUND 1 -

Posted by Onion開発日記 at 2006-06-18 18:40
Groovyで書いてみた。まずはこんな感じのコード。 println ((2..100).findAll{x->(2..x/2).every{x%it!=0}}) しかし、実行してみると、何故か2が含まれない。 [3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79 , 83, 89, 97] たぶん、範囲式の使い方が原因だろうということで、ちょっと調べてみる。 (2..1).each{println it} => 2 1 どうやら、(x .. y)で、x>yの場合は、空の範囲を生成するのではなく、x, x-1,x-2,...,yの範囲を生成するようだ。しかも、Groovyの公式ページのドキュメントを見ても、この仕様に関するきちんとした記述が見当たらないorz 仕方無いので、内側のループは2..x/2ではなく、2...xにすることにした。 println ((2..100).findAll{x->(2...x).every{x%it!=0}}) 今度は、ちゃんと2も出力されるようになった。 [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

100までの素数を求める

Posted by T::Yok..... at 2006-06-18 20:56
キミならどう書く 2.0 - ROUND 1面白そうなので参加。ハッシュを使ってみた。my $num = 100;my %a = map {$_, 1} 2..$num; for my $m (2..($num / 2)) { for my $n ($m..$num) {...

上限を決めずに素数を生成(JavaScript版)

Posted by メモ at 2006-06-19 05:18
JavaScriptでも書いてみた。

LL2006 君ならどう書く

Posted by FloralCompany.log at 2006-06-19 15:29
LL2006の、「君ならどう書く」の読者参加版ができていた。 お題は 「100ま...

[Ruby] 100までの整数から素数を列挙せよ

Posted by miyamukoの日記 at 2006-06-19 15:55
お題は「100までの整数から素数を列挙せよ」です. 手垢がついた手法だと思うけど、Google 電卓で計算してみた。 ほんとは はてなのスーパー pre 記法拡張を使ってみたかっただけ。

[Squeak][Smalltalk][OOPL] エラトステネスのふるいをコンパクトにする方法

Posted by sumim’s smalltalking-tos at 2006-06-19 17:13
素数を列挙するにあたって、エラトステネスのふるいは比較的高速で、たとえば、404 Blog Not Found:LLR2006 - 1,000,000(番目|まで)の素数 で、いくつかの言語で例示されているのとほぼ同じことをする Squeak を使った Smalltalk の次のコード… [ | max primes isPrime | m

エラトステネスの篩の改良

Posted by はてなるせだいあり at 2006-06-19 22:28
上のソースでは探索範囲1つにつき true/false を作るので、1億まで探索しようと思うとかなりのメモリが必要となる。どうせ真偽値なのだから、BitArray を用いれば候補一つにつき 1bit で済む。また、偶数はどうせ素数ではないので、奇数のみを探索対象にすることで、テーブ

正規表現で素数探索

Posted by はてなるせだいあり at 2006-06-19 22:31
def sieve_regex(max) table = ' ' + (2..max).map{|i|i.to_s}.join(' ') (2..Math.sqrt(max)).each do |i| 1 while table.gsub!(/^((?:\d* ){#{i-1}}(?:(?:\d* ){#{i}})+)\d+/){$1} end table end perl -le ’$,=” ”; print grep {

上限を決めずに素数を生成の高速化(Ruby版)

Posted by メモ at 2006-06-19 22:34
「上限を決めずに素数を生成」を高速化。

[技術]せっかくだから素数数えとくか

Posted by はこべにっき# at 2006-06-19 23:33
決して落ち着きを取り戻すためにやってるわけではない*1.キミならどう書く 2.0 - ROUND 1 -ネタ. Otsuneのなんでこれで素数判定できるかは、読者の宿題のエラトステネスのふるいがステキだったのでうちもふるいを使いたいと思った.で,せっかくだから一気にふるいをかけ

[tech]数を数えて落ち着くんだ(Pnuts編)

Posted by yojikのブログロ at 2006-06-20 01:26
キミならどう書く 2.0 Pnutsでできる限り簡潔、効率無視で書いてみた。 isPrim = function(p) {list(range(2,p)[function(d) p%d == 0]).size()==1} for(i: range(2, 100)[isPrim]) print(i,",") [実行結果]: 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,

100までの整数から素数を列挙せよ(Mathematica)

Posted by inquisitor at 2006-06-20 10:30
キミならどう書く 2.0 - ROUND 1 -から Select[Range@...

100までの素数を求める[APL版]

Posted by T::Yok..... at 2006-06-20 14:17
キミならどう書く 2.0 - ROUND 1APL版も作成してみた。(ただし、このアルゴリズムは昔に本で読んだもので、僕が考えた訳ではない)1~Xまでの数列を...

100までの整数から素数を列挙せよ(LaTeX)

Posted by inquisitor at 2006-06-20 15:34
\documentclass{jarticle} \newif\ifprime ...

100までの整数から素数を列挙 in Io :-|

Posted by [CD]CoffeeDiary at 2006-06-20 19:12
キミならどう書く 2.0 - ROUND 1 - というものが開催されていたことに遅ればせながら気がついたので、 Ioの思い出しを兼ねてやってみた。 (HaskellとかJavaScriptはほかの人がやっていたし) 最も簡単なパターンは、出力しちゃうこと。(ズル)write("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97")Ioではprintはオブジェクトへのメッセージなので、 こういう場合はwr...

キミならどう書く 2.0 - ROUND 1 - 100までの整数から素数を列挙せよ@AppleScript

Posted by ぐるりうぇぶ at 2006-06-21 01:14
キミならどう書く 2.0 - ROUND 1 -— Lightweight Language Ringより。やっぱり俺が書くならAppleScriptだろうてことで書いてみた。基本はエラトステネスの篩なんだが、AppleScriptでリストを扱うとき、追加するのは簡単だけど取り除くのが面倒くさい上に遅くなるし、100じゃなくもっと多いときは死ぬほど遅くなる(主に最初のリストを作る時点で)ので、『素数リストと探索リスト』ではなく『素数リストと除外リスト』を作り、素数リストの最大値の二乗が探索リストの最大値を超えたら、(素数リストの一番最後の数+1)〜100から除外リストにある数字を除外して終了。なんつーか素朴だなぁw

上限なしで素数生成(ML版)

Posted by メモ at 2006-06-21 05:33
さらに、ML(mosml)でやってみた。

100までの整数から素数を列挙せよ(XSL)

Posted by inquisitor at 2006-06-21 18:13
<?xml version="1.0" encoding="UTF-8" ...

[PHP]PHPな応募ないすね

Posted by Blog::koyhoge at 2006-06-22 02:39
キミならどう書く 2.0 - ROUND 1 - — Lightweight Language Ring でPHPな応募がない件について。(TB全部見てないので、もしあったらごめんなさい) ということでいっちょ書いてみました。 アルゴリズムに凝るのは苦手だし、ワンライナーは端からPHPに向いてないのであ

100までの素数を数えるサンプル

Posted by HotPHPPER News at 2006-06-22 12:41
PHPkoyhogeLightweight Language Ring100PHPkoyhogePHP5

[neta] FORTRANで書いて、100台のスパコンにそれぞれ自然数を割り振って、素数かどうかを判定させた結果を返してもらうというのはどうか

Posted by otsune's SnakeOil at 2006-06-22 14:02

PHPで素数判定

Posted by ハズレ日記 at 2006-06-22 14:06
LL Ring の前哨戦として「キミならどう書く 2.0」の開催です! 今回は...

100までの整数から素数を列挙せよ(SQL)

Posted by inquisitor at 2006-06-22 15:13
SELECT n as prime FROM( SELECT n,COUNT...

[Squeak] 100までの整数から素数を列挙せよ…を Squeak の eToys で

Posted by sumim’s smalltalking-tos at 2006-06-22 15:59
eToys でも id:squeaker さんの Kedama(毛玉)を使って書いてみました。Kedama は、端的には、複数のタートルを使って描くタートルグラフィックス・システムです。 Kedama: A massively-parallel tile-scriptable particle system Yamamoto さんのチュートリアルがわかりや

[Coding] 100までの素数@XQuery

declare function prime($i as xs:integer) as xs:boolean { every $div in (2 to $i - 1) satisfies $i mod $div != 0 }; for $i in (2 to 100) return if(prime($i)) then $i else () XQueryだとこんな感じでしょうか。しょぼーん(´・ω・`)

[OCaml] キミならどう書く 2.0 - ROUND 1 - (L.L.Ring)

Posted by jijixi's diary at 2006-06-22 19:59
スレッドを使ったネタバージョン (言語は OCaml)

1〜100までの素数表示

Posted by らんの日記 at 2006-06-23 23:41
http://ll.jus.or.jp/2006/blog/doukaku1 ary = (2..100).to_a ary.each do |m| ary.delete_if do |n| m != n && n % m == 0 end end p ary 参加資格とか特にないよね? 特に面白いのも思いつかず。既に誰かが書いてそうな気はしたけど(未確認)、書いてみた。

[PHP] 100までの素数

Posted by t_komuraの日記 at 2006-06-25 13:18
<?php $max = 100; $arr = range( 2, $max ); $end = sqrt( $max ); for ( $i = 2; $i < $end; ++$i ) { if ( in_array( $i, $arr ) ) { $arr = array_filter( $arr, create_function( '$v', 'return $v % ' . $i . ' || $v === ' . $i . &

[Ruby] キミならどう書く 2.0 - ROUND 1 -

Posted by Hexaの日記 at 2006-06-25 15:04
フェルマーテストに引き続き,エラトステネスの篩もやってみました. エラストテネスの篩では,検証する数の平方根まで比較すれば, 素数か非素数かの判定は十分といえます. prime = Array.new() max = 100 i = 2 while i <= max @flag = true prime.each{|num| if Mat

[Perl]100までの素数(mapと正規表現で)

Posted by akihitoの日記 at 2006-06-25 18:23
遅ればせながら参戦 for my $i (2..100) { my $n = join ",",map{$i%$_} 2..$i-1; if($n !~ /^0\,/ && $n !~ /\,0/){ print "$i \n"; } } mapと正規表現で作ってみました。

Javaで素数を100万個求める

Posted by minghaiの日記 at 2006-06-25 18:46
LL Ringの素数の話が盛り上がっている。 http://ll.jus.or.jp/2006/blog/doukaku1 Javaで参戦しようかと思ったがネタにも走れず、かといって短さにも走れず、速さだけなら前回のたらいの2番煎じになってしまう。 芸が無いので今回は見てるだけにしようと思った。 しかし色々

[prog] キミならどう書く 2.0 - ROUND 1 -

Posted by Greenbear Diary at 2006-06-25 23:57
Befungeで書いてみました。 >v >125*25*pv v < > v >25*25*g 1+:25*`| > v >:25*25*p >25*25*g + :55*4*`| ^ < ^ < >:::25*%\25*/p ^ >25*,@ ^ < v < >0>1+:55*4*`| v < > ^ >::25*%\25*/g 48*-| >:.v ^ < < yhara@cosmos:~/src/befunge % ./a.out primes.bf Befunge-93 Interpreter/Debugger v2.12 2 3 5 7 11 13 17 19 23 29 31 32 37 41 43 47 53 59 61 67 71 73 79 83 89 97 Befungeについては、こちらを参照。 自分で動かしてみたいという奇特な方は、http://quadium.net/funge/downloads/ から処理系(Cのソースコードと、Windows用EXE入り)を入手してください。

[Perl] 100までの素数 (キミならどう書く 2.0 - L.L. Ring)

Posted by 酒日記 はてな支店 at 2006-06-26 14:30
http://ll.jus.or.jp/2006/blog/doukaku1/ http://d.hatena.ne.jp/t-akihito/20060625/1151227410 LL Ring のチケット発売今日からだ。買ってこなくちゃ。 List::MoreUtils から all と before_incl を使って、リスト操作っぽく書いてみた。List::MoreUtils は標準モジュー

Brainf*ckで100までの素数を列挙してみるテスト

Posted by TAKESAKO @ Yet another Cybozu Labs at 2006-06-26 17:45
キミならどう書く 2.0 - ROUND 1 - LL Ring の前哨戦として...

[Perl][pugs] 100までの素数 Perl6 / pugs 版

Posted by 酒日記 はてな支店 at 2006-06-26 22:50
Perl6 (pugs) で動くようにしてみた。 #!/usr/bin/pugs my $max = @*ARGS.pop || 100; my @primes = (2); for (3..$max) -> $n { @primes.push($n) if @primes.before_incl:{ sqrt $n <= $_ }.all:{ $n % $_ }; } @primes.join(' ').say; sub all (@lis

キミならどう書く 2.0 - ROUND 1

Posted by 西尾泰和のブログ at 2006-06-26 23:42
おおっと、今知りました。(via 竹迫さん) キミならどう書く 2.0 - R...

キミならどう書く 2.0 - ROUND 1

Posted by 西尾泰和のブログ at 2006-06-26 23:56
Pythonでdefもifもwhileもforも使わずに1行(126文字)で作...

100までの素数(キミならどう書く 2.0 - ROUND 1 -)

Posted by 最近のちょっ得 at 2006-06-27 00:14
もう遅いか。うち着いたの45分ぐらいだもんな。。。 ルートnが必要だと思って、mathn.rb のヘルプ見たら、素数もあるじゃん。 あるものは使えばいいのさってことで、ヘルプそのまま。 require 'mathn' pp = Prime.new; pp.each {|x| break if x >...