有趣的徵才啟事

一言以蔽之:徵才啟事是展示公司理念的人才邀請函。

尤拉數e=2.71828…,是個無限不循環小數,由於它的循環節無限長,所以任意有限長的正整數字串都可以在e的小數位中找到。

這句話是什麼意思呢?比如說某甲身高178cm、體重69Kg、生日7月26日,下面是e的前200位數字,在裡面就可以找到178,69,07,26。或許你會說這四個數字太簡單,只是巧合,但其實只要再看更長的位數,也可以在e裡面找到你的電話。(事實上,在下面這串數字中就有新竹縣某位現任議員的七位數聯絡電話)。

e=2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642742746639193200305992181741359662904357290033429526059563073813232862794349076323382988075319525101901

根據報導,矽谷101號高速公路沿線的廣告牌上曾經出現了一個廣告,寫著:

{first 10-digit prime found in consecutive digits of e}.com
網址:「在尤拉數e中找出第一個十位數的質數」.com

如果你能破解這個數學難題,就可以連到這個網站(答案是7427466391.com,目前這網站已消失),會看到下一個問題,依序把所有題目都解出以後,會發現它是Google的徵才啟事,只徵求足夠聰明的求職者。


Job Description

104和1111人力銀行上,偶爾也會看到令人噗哧一笑的徵才文案,例如這報導中的例子,徵才訊息很是幽默。

【工作內容】
回覆現有客戶與專案 (要應付澳客需求的同時, 要收尾的東西還不少)
維護/服務現有ODM客戶 (需要同時使用英文及小畫家溝通)
聯繫/溝通PE/FAE/PM與工廠 (要拿出方法使對方願意幫你, 如隨身攜帶雙花紅棍)
老闆交辦事項 (大魔王, 思緒快到讓你懷疑你跟他是在平行宇宙)
出國參展 (累倒快往生)
RMA進度追蹤 (你會想拿電鑽和烙鐵去請教工廠)

有些工作職缺的job description會寫得很清楚,包括求職者擔任的角色、工作內容、需要的條件、薪資福利等。但有些企業徵才的職缺敘述卻沒幾個字,通常這是因為那個領域的圈圈很小,如果你是巷子裡面的人(內行人),你就一定會知道狀況,如果你是巷子外面的人(外行人),公司也懶得跟你說太多。


備註:找到Google那題十位數質數的答案有很多種方法,最簡單的方法是利用特別的數學軟體,例如Mathematica。下面則是提供一段Python程式碼,可以在Python Online Compiler裡面執行。

import math
def is_prime(d):
    for q in range(2, int(math.sqrt(d)) + 1):
        if d % q == 0:
            return 0
    return 1
    
    
N = 10  # N-bit prime number
# 1000-digit of e
e = "7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509961818815930416903515988885193458072738667385894228792284998920868058257492796104841984443634632449684875602336248270419786232090021609902353043699418491463140934317381436405462531520961836908887070167683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354"

for i in range(len(e) - N + 1):
    if e[i] == '0':
        continue
    d = int(e[i : i+N])
    if is_prime(d):
        print(d)
        break

改變一下程式碼裡面的N,可以在e的前1000位小數中,找出其他位數的質數,分別是:

1位數質數:7
2位數質數:71
3位數質數:281
4位數質數:4523
5位數質數:74713
6位數質數:904523
7位數質數:6028747
8位數質數:72407663
9位數質數:360287471
10位數質數:7427466391
11位數質數:75724709369
12位數質數:749669676277
13位數質數:8284590452353
14位數質數:99959574966967
15位數質數:724709369995957
16位數質數:2470936999595749
17位數質數:28459045235360287
18位數質數:571382178525166427