Bash
ProjectEuler
数学

Project Euler Q47 【異なる素因数】

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

問題

それぞれ$2$つの異なる素因数を持つ連続する$2$つの数が最初に現れるのは:

$14 = 2 × 7$
$15 = 3 × 5$

それぞれ$3$つの異なる素因数を持つ連続する$3$つの数が最初に現れるのは:

$644 = 2^2 × 7 × 23$
$645 = 3 × 5 × 43$
$646 = 2 × 17 × 19$

最初に現れるそれぞれ$4$つの異なる素因数を持つ連続する$4$つの数を求めよ. その最初の数はいくつか?

解答

seq 999999 |
factor |
awk '{delete a;for(i=2;i<=NF;i++){a[$i]=1};if(length(a)==4){print $0}}' |
awk '{print $1*1,$1+1,$1+2,$1+3}' |
factor |
awk '{delete a;for(i=2;i<=NF;i++){a[$i]=1};if(length(a)==4){print $0}}' |
awk '{print $1*1}' |
sort -k1,1n |
uniq -c |
awk '$1==4{print $2-3}' |
head -1
134043

最初は$134046$と誤答した。$n,n+1,n+2,n+3$を考えたときに、$134046$は$134043$から$134046$に一度ずつ登場するのだから$134046$が$4$回登場する。
つまり先頭は$134043$である。
ということに気付かなかった。悔しい。

答え合わせ

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