2012-08-05 27 views
6

引数までの素数のリストを生成する最も単純な関数は何ですか?そのような関数を思いつくのは難しくありません。例えば:Mathematica - 極限までの素数のリストを生成する

foo[n_] := Block[{A = {}, p = 2}, 
      While[p < n, A = Append[A, p]; p = NextPrime[p]]; 
      A] 

しかしこれはあまりにも乱雑です。私は何かをしたいと思っています

foo[n_] := Table[Prime[i], {i,2,???}] 

どこですか?インデックスはNextPrime[n,-1]です。これは可能ですか?

+0

[Mathematica固有のStackExchangeサイト](http://mathematica.stackexchange.com/)があることを知りたいかもしれません。 Mathematicaでプログラミングするときは、常にWhile、 '' For'(http://mathematica.stackexchange.com/q/2158/8)、 '' Do''と 'Append'のすべての使用をチェックするのが良いです。それらは他の言語からの冗談であり(下記の答えとして)、[通常はMathematicaでより簡潔な方法があります](http://mathematica.stackexchange.com/q/7924/8)。 – Verbeia

答えて

6
例えば

f[x_] := Prime[[email protected]@x] 

使用

Grid[Table[{x, f[x]}, {x, 13, 20}], Frame -> All] 

Mathematica graphics

+0

ありがとうございます。私が紛失していた部分(私はそれを 'Prime'の逆で、基本的に' PrimePi'と呼んでいました) – user1339898

0

この一般的なアルゴリズムの1つは、Sieve of Eratosthenesです。これは簡単なアルゴリズムであり、どの言語でも簡単に実装できます。

+3

OPはアルゴリズムを要求するのではなく、特定の言語の特定の関数を要求しています。さらに、問題の言語には、すでに利用可能なプリミティブが用意されています。答える前にタグを見てください。 –

2

私のお気に入りの形:

p = Prime ~Array~ [email protected]# &; 

p @ 20 

{2、 3,5,7,11,13,17,19}

関連する問題