from 素数だの積だのよくわかんねっちゃ - 牌語備忘録 -pygo
CPANモジュール使ってしまうと、こうかなぁ。
perl -MMath::Big::Factors=factors_wheel -le'map@{[factors_wheel$_]}-2||print,1..99'
$ perl -MMath::Big::Factors=factors_wheel -le'map@{[factors_wheel$_]}-2||print,1..99' 4 6 9 10 14 15 21 22 25 26 33 34 35 38 39 46 49 51 55 57 58 62 65 69 74 77 82 85 86 87 91 93 94 95
モジュールを使わずに、というのを素因数分解ワンライナーの作り方 その2 - すぎゃーんメモのときの要領で考えてみた。
perl -le'print for grep{(@_=grep!($a%$_),2..($a=$_))>1&&(grep!($a%$_),2..($a/=$_[0]))<2}1..99'
ちゃんと34個でてくる。…けどちょっと苦しいかなぁ。サブルーチン使った方がいいだろうか。
サブルーチン版。
perl -le'sub f{(grep!($a%$_),2..($a=pop)-1)[0]}$a=f$_ and!f($_/$a)&&print for 1..99'
ちょっとは短くなった。自分なりに頑張って短くしてみたつもりだけど、これ以上は思いつかなかった。。。
もあとで考えてみよう。
てか、Wikipediaに載ってる100以下の半素数の例、間違ってる…?
半素数 - Wikipedia