Bash
ProjectEuler
数学

Project Euler Q41 【パンデジタル素数】

Project Eulerをワンライナーで解いてみる。
間違っていたらコメントください。

問題

$n$桁パンデジタルであるとは, $1$から$n$までの数を各桁に$1$つずつ持つこととする.

#下のリンク先にあるような数学的定義とは異なる

例えば$2143$は$4$桁パンデジタル数であり, かつ素数である. $n$桁(この問題の定義では9桁以下)パンデジタルな素数の中で最大の数を答えよ.

解答

$1+2+3+4+5+6+7+8+9=45=3*15$、
$1+2+3+4+5+6+7+8=36=3*12$、
$1+2+3+4+5+6+7=28$
以上より、求める値は$7$桁の数($7$桁のパンデジタル素数が存在しなければ別だが)。

seq 1234567 7654321 |
grep -v "[0|8|9]" |
factor |
awk 'NF==2{print $2}' |
awk '{s=1;for(i=1;i<=7;i++){s*=index($0,i)};print $0,s}' |
awk '$2!=0{print $1}' |
tail -1
7652413

答え合わせ

こちらのサイト様と一致していればOKとした。
http://kingyojima.net/pje/041.html