3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【swift】 1から100未満の素数の和をforを使わずに求める。

Posted at

もともとBASICの世界から来たので関数型プログラミングには不慣れでしたが、最近 map, filter, reduce などの便利な機能を覚えたので頻用するようになりました。
以前、
問題: 0から100未満の偶数の和を求めよ。
という投稿がありました。
本投稿では、「偶数」を「素数」に置き換えて
問題: 1から100未満の素数の和を求めよ。
という例題をforを使わずに解いてみました。(swift 4)

        let a = (2 ..< 100).filter{$0 % 2 != 0 || $0 == 2}.filter{$0 % 3 != 0 || $0 == 3}.filter{$0 % 5 != 0 || $0 == 5}.filter{$0 % 7 != 0 || $0 == 7}
        let b = a.reduce(0, +)
        print("\(a)の総和は\(b)")

print結果は、以下のようになります。
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]の総和は1060

う〜ん、なんかインチキくさいコードです。
1から1万未満とか1億未満の素数の和を求めようとするとお手上げです。
いつもQiitaの皆様の投稿には勉強させてもらっていますが、皆様からの改善案(厳しいツッコミ)が頂ければ幸甚です。

3
0
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?