値Nが持つ約数を列挙するアルゴリズムです。
/**
* 引数Nの約数をリストで返す
*
* @param N 約数を求める値
* @return Nの約数のリスト
*/
public List<long> CalculateIsprimeList(long N)
{
List<long> list = new List<long>();
for (long i = 2; i * i <= N; i++)
{
if (N % i != 0)
{
continue;
}
list.Add(i);
if(i != N / i)
{
list.Add(N / i);
}
}
list.Sort();
return list;
}
前回の素数判定のコードと似ています。
小さい値から、Nの約数を求めていき、約数だった場合、その値と商も約数として出力します。