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とか使えば何とかなりそうなんだけど……