エラトステネスのふるいを使って素数を生成してみる
試験勉強の息抜きに素数生成プログラムをSwiftで書いてみた。何番煎じだよって感じですが…
func primeMake(primeRange:Int)->[Int]{ //素数の生成範囲を指定 let loop:Int = primeRange var num:[Int] = [] var prime:[Int] = [] //探索用配列に指定した範囲までの整数を追加 for var i=2; i<loop+1; i++ { num.append(i) } //生成範囲の2乗まで繰り返す for var i=1; i < Int(sqrtf(Float(loop))); i++ { //探索用配列の先頭を素数配列に追加 prime.append(num[0]) num.removeAtIndex(0) //素数配列の最後の要素で割り切れる数を探索用配列から削除 for var j=0; j<num.count; j++ { if num[j] % prime[prime.count-1] == 0{ num.removeAtIndex(j) } } } let count = num.count //探索用配列に残っている数を素数配列に追加 for var k=0; k<count; k++ { prime.append(num[0]) num.removeFirst() } return prime } print(primeMake(100))
primeMake()の引数に生成したい素数の範囲を指定してあげればIntの配列で返してくれます