« 完全数 | Main | Project Euler ( Problem 5, 6, 16 ) »

Project Euler ( Problem 29 )

■ruby版
#!/usr/bin/ruby

zz = z = []
a = 2..100
b = 2..100

p a
p b

a.each{ | x |
b.each{ | y |
z << x ** y
}
}

zz = z.sort.uniq

p zz.length # 回答
p zz # 確認

__END__


2..100
2..100
9183
[4, 8, 9, 16, 25, 27, 32, 36, 49, 64, 81, 100, 121, 125, 128, 144, 169,
196, 216, 225, 243, 256, 289
...
,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]


■haskell版
思考過程(試行過程)を記載しています。

x^yを導出し、結果をソートする。
sort [x^y | x <-[2..5], y<-[2..5]]
[4,8,9,16,16,25,27,32,64,81,125,243,256,625,1024,3125]

x^yを導出し、結果の重複を取り除く。
nub [x^y | x <-[2..5], y<-[2..5]]
[4,8,16,32,9,27,81,243,64,256,1024,25,125,625,3125]

x^yの結果から重複を取り除き、その数を算出する。
length $ nub [x^y | x <-[2..5], y<-[2..5]]
15

xとyを問題で与えられた上限に変更。
length $ nub [x^y | x <-[2..100], y<-[2..100]]
9183

xとyを問題で与えられた上限に変更した場合の数列を見たいので、出力。重複を取り除きソート。途中省略
sort $ nub [x^y | x <-[2..100], y<-[2..100]]
[4,8,9,16,25,27,32,36,49,64,81,100,121,125,128,144,169,196,216,225,243,256,289,324,343,361,400,441,484,512,529,576,625,676,729,784,841,900,961,1000,1024,
...
,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]

素人考えで作ったものを公開の場所に置く是非には迷うが、とりあえず自分の記録として残しておく。

|

« 完全数 | Main | Project Euler ( Problem 5, 6, 16 ) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Project Euler ( Problem 29 ):

« 完全数 | Main | Project Euler ( Problem 5, 6, 16 ) »