Gushwell's C# Programming Page
C#プログラマーのための一味違う学習サイト。
素数の計算(エラトステネスのふるい)
エラトステネスのふるいについては、Wikipediaの
こちら
をみてください。
Primesが素数を求めるメソッドです。IEnumerable<T>を返すようにしています。
using System; using System.Collections.Generic; using System.Linq; namespace PrimeNumberApp { class Program { static void Main(string[] args) { foreach(var n in Primes(100)) Console.Write("{0,3}",n); Console.WriteLine(); Console.ReadLine(); } static IEnumerable<int> Primes(int maxnum) { int[] primes = Enumerable.Range(0, maxnum + 1).ToArray(); primes[1] = -1; // -1 : 素数ではない int squareroot = (int)Math.Sqrt(maxnum); for (int i = 2; i <= squareroot; i++) { if (primes[i] > 0) for (int n = i * 2; n <= maxnum; n += i) primes[n] = -1; } return primes.Where(n => n > 0); } } }
[PR]
バストアップ