LemonteaのUnity部屋

C#とかのお話です~

C# n以下の素数を求めて列挙する

こんにちは。レモンティーです。

今回は1からnまでの素数のListを取得します。
たまにあったら便利な時があります。

今回はこんな感じにしました。

public List<int> GetPrimeNumberList(int n)
        {
            var list = Enumerable.Range(2, n-1).ToList();
            var result = new List<int>();

            while(list.Count != 0)
            {
                result.Add(list[0]);
                list = list.Where(x => x % list[0] != 0).ToList();
            }
            
            return result;
        }


まず、

var list = Enumerable.Range(2, n-1).ToList();
//n-1 は n-2 +1 です。わかりにくいですね…

で2からnまでの整数が並んだListを作ります。
(詳しくは↓)
www.sawalemontea.com



後はループの中で
listの先頭で割り切れるものを除外していくことで
listの先頭には常に素数が現れるので
これをresultに記録していけばOKです。


使用はこんな感じです

var pl = GetPrimeNumberList(10000)

これで1万以下の素数のListがplに格納されます。


今回はこれでおしまいです
www.sawalemontea.com