2010年6月8日 星期二

Google求職問題

某天在矽谷的某條高速公路上矗立了一個巨型看板,上面寫著
{the first 10-digit prime in consecutive digits of e}.com

有興趣的人解出了第一題之後,進到那網頁,有第二個問題:
f(1)=7182818284
f(2)=8182845904
f(3)=8747135266
f(4)=7427466391
f(5)=?

解出f(5)之後,解答後加上.com可以連到另一個網頁,是google的求才資訊。這是很久以前的事了(所以算出來以後不用試著去連那網頁,早拿掉了),不過我想還是很多人沒聽過。有興趣可以算算。我自己用mathematica算出來的解答如下

1. 7427466391
2. 5966290435

程式碼如下

StringDigitsE = StringDrop[ToString[N[E, 200]], {2}]
Select[Table[
ToExpression[StringTake[StringDigitsE, {i, i + 9}]], {i,
190}], PrimeQ]
Select[Table[
ToExpression[StringTake[StringDigitsE, {i, i + 9}]], {i,
190}], (Total[IntegerDigits[#]] == 49) &]


說明:第一個問題很直接,都是程式技巧的問題。第二個問題需要一點創意思考,要點是每個F(n)的值的每個數位相加總合都是49。當然可以硬湊出答案,不過那不會是出題者的本意。