比較的小さな数字の素数の数列を得る

比較的小さな数字の素数の数列を得る


エラトステネスの篩(ふるい)のアルゴリズムを利用した素数数列の生成

  1. 2を除く偶数と1を消す
  2. 残った3の倍数を消す
  3. 残った5の倍数を消す
  4. 残った7の倍数を消す

以上の処理を行った後に残る数が素数になっている
以下のコードでは素数リストに1を含ませるかをブール値で指定できるようにしています。素数に本来1は含まれませんが利用上必要な場合は利用できます

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

public class PythagorasTrigon : MonoBehaviour
{
      void Start ()
       {
               IEnumerable<int> primeNum = Pythagoras (100, true);
               foreach (var item in primeNum) {
                       print (item);
               }
       }

      IEnumerable <int> Pythagoras (int range, bool one=false)
       {
               IEnumerable<int> numbers, primeNum;
       
               numbers = GetRange (range);
               //エラトステネスの篩のアルゴリズムを利用する
               primeNum = numbers.Where (p => p != 1 && p % 2 != 0 && p % 3 != 0 && p % 5 != 0 && p % 7 != 0 | | p == 2 | | p == 3 | | p == 5 | | p == 7);

              if (one) {
                       yield return 1;
               }

              foreach (var item in primeNum) {
                       yield return item;
               }
       }
   
       public static IEnumerable <int> GetRange (int num)
       {
               for (int i = 0; i < num; i++) {
                       yield return i;
               }
       }
}

メニュー


  • 最終更新:2015-03-10 00:59:40

このWIKIを編集するにはパスワード入力が必要です

認証パスワード