100までの素数を求めるプログラム

いわゆる古典ですが,C#でどう実装するのがエレガントなんだろう?
とりあえず今日のところはベタに書いてみる.

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      List<int> primeList = GetPrimes(100);
      primeList.ForEach(delegate(int prime) { Console.Write("{0},", prime); });
    }

    static List<int> GetPrimes(int maxNum)
    {
      List<int> primeList = new List<int>();
      primeList.Add(2);

      for (int i = 3; i <= maxNum; i++)
      {
        if (IsPrime(i,primeList))
        {
          primeList.Add(i);
        }
      }

      return primeList;
    }

    static bool IsPrime(int target, List<int> primeList)
    {
      foreach (int prime in primeList)
      {
        if (target % prime == 0) return false;
      }

      return true;
    }
  }
}

とりあえずgotoを使うつもりはないんですが,GetPrimesとisPrimeの2つに分かれてしまったのが不満.Anonymous Methodとか使えば何とかなりそうなんだけど……