LoginSignup
2
2

More than 5 years have passed since last update.

Project Euler Q35 【巡回素数】

Posted at

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

問題

$197$は巡回素数と呼ばれる. 桁を回転させたときに得られる数 $197$, $971$, $719$ が全て素数だからである.

$100$未満には巡回素数が$13$個ある: $2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79,$ および$97$である.

$100$万未満の巡回素数はいくつあるか?

解答

seq 2 1000000 |
factor |
awk 'NF==2{print $2}' |
grep -v "[0|4|6|8]" |
grep -v "[2|5]." |
awk '{for(i=1;i<=length;i++){printf substr($1$1,i,length)" "};print ""}' |
while read line;do factor $line;echo "@";done |
tr '\n' ' ' |
tr '@' '\n' |
awk 'NF==(length($1)-1)*2' |
wc -l
55

偶数を$1$つでも含めば巡回素数ではないので偶数を除外した。
するとみるみるうちに対象が少なくなっていったので処理時間をグッと短くなった!

答え合わせ

こちらのサイト様と一致していればOKとした。
Project Euler 35 Circular primes below one million in C#

2
2
0

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
2
2