片來源:Tucker Nichols
作者 Kenneth Chang
翻譯 Lineker
數學家們新近發現了最大的已知素數,它比先前出現的最大素數幾乎多出了500萬位。
在中央密蘇里大學(University of Central Missouri)衛星校園里的一座計算機實驗室中,一臺在其他人看起來毫不起眼的臺式電腦,即143室中的5號機,將74,207,281個2乘在一起,再減去1。之后,它通過檢驗發現這個計算出來的數字,不能被除1和它自身之外的其他任何整數所整除——這正是素數的定義。
這個巨大的數字只能以指數記數法表示出來,即274,207,281-1。
先前出現的最大素數為257,885,161-1,其位數約為1700萬位。
這是互聯網梅森素數大搜索(Great Internet Mersenne Prime Search,簡稱Gimps)發現的第15個素數。Gimps是一個志愿項目,已經運作了20年。“我一直對素數很感興趣”,喬治·沃爾特曼(George Woltman)說,他在退休之后發起了Gimps計劃,“我有大把的空閑時間?!?/p>
梅森素數是指那些可以被表示為2n-1的數,其中“n”為整數。它們以馬林·梅森(Marin Mersenne)的名字來命名。梅森是一位法國神學家兼數學家,他在17世紀早期曾對這類數字展開過研究。
舉例來說,3就是梅森素數,它可以記成2n-1的形式,即22-1。
不過,并不是所有能夠以這種形式表達的整數都是素數。譬如當n=4時,所得結果為24-1=15,15不是素數,因為它可以被3和5整除。
整數越大,素數越分散,但總歸會有一個更大的素數存在,只是要找到這個素數會困難得多。數學家們到現在總共才發現49個梅森素數。
Gimps充分利用了分布于世界各地電腦的閑置計算能力。志愿者下載好免費的計算軟件,當電腦沒有在被使用時,軟件會在后臺悄悄運行。
中央密蘇里大學的數學教授柯蒂斯·庫珀(Curtis Cooper)是早期熱衷者之一,他早在1997年就加入了Gimps計劃。目前,他已經為大學兩個校區里的800臺電腦都裝上了計算程序。庫珀博士既從事數論領域的研究,也在教授計算機科學課程?!癎imps計劃相當于兩個領域的聯姻。”他說。
這所大學的電腦之前已經發現了三個梅森素數,最近的一次是在2013年。
143室的5號電腦滿負荷運行了31天才完成了計算,最終它得出了274,207,281-1的結果是個素數的結論。事實上,早在去年的9月17日,它就已經盡職盡責地將這一結果報告給了西雅圖的一臺電腦服務器,后者專門用于協調全世界Gimps電腦的計算結果。
但沒人注意到。
由于服務器出點了小故障,本來早就該發送給庫珀博士和Gimps項目管理員的電子郵件并沒有發送出來。
直到今年1月7日,服務器管理員亞倫·布羅瑟爾(Aaron Blosser)在進行例行維護時才發現了上述情況。他用一臺運行速度快得多的電腦核實了這一結果,并在兩天之后通報給了庫珀博士。
經過進一步檢驗之后,這個新發現于1月19日被正式公布了出來。
素數對于密碼學之類的領域非常關鍵,不過新發現的這個梅森素數太過巨大,至少短期內不會有什么實際應用價值。(Gimps軟件卻有著實際應用,它在揭示因特爾Skylake新型處理器存在的一個缺陷的過程中,發揮了關鍵作用。)
這個巨大的素數究竟有多大呢?
我測量了一下自己記數的速度:四秒鐘大約能寫出10位數。如果紙張和墨水足夠,再假設我寫字的手能保持這樣的速度——實際肯定不可能,那么寫出274,207,281-1這個數的22,338,618位數,我就要花費三個多月的時間。
如果要把這些位數打印出來,根據字號的不同,它們大約可填滿6000至7000張打印紙。
或許你會疑惑:如果有個素數被電腦發現了,但一直沒有人注意到,那它算是真的被發現了嗎?答案是否定的。官方宣布該梅森素數的發現日期為1月7日,即布羅瑟爾先生發現上述結果的時間,而不是電腦得出結果的時間。
不過,庫珀博士表示,這臺電腦將會被保留起來,就像之前發現那三個梅森素數的那些電腦一樣。
“電腦不會開口說話,”他說。“它可不知道自己現在已經是名聲在外了。”
原文地址
http://www.nytimes.com/2016/01/22/science/new-biggest-prime-number-mersenne-primes.html?_r=0
到了一年畢業季,又有很多大學生從大學畢業,來到社會。今天主要是給這些小伙伴一些面試的小技巧,總歸一句多學習一些也是有用處的,臨時抱佛腳也要抱才有啊,所以今天給大家分享兩個小問題,現在的前端程序員需求已經不是能用html布局,或是用javascript寫個特效這么輕松了,也因為現在的初級前端泛濫,所以各大公司對前端的面試要求也開始逐步提高,特別是對于基礎知識的扎實程度,能否靈活運用所學的知識這些方面給予的考驗也會相對的嚴格!
現在就來看看!
考慮下面的代碼:
答案:
上面代碼的目的在于檢測JavaScript的一個重要概念:閉包。對于每一個JavaScript開發者來說,如果你想在網頁中編寫5行以上的代碼,那么準確理解和恰當使用閉包是非常重要的。
好了,回到上面的代碼??刂婆_會輸出兩次You clicked element #NODES_LENGTH,其中#NODES_LENGTH等于nodes的結點個數。由于閉包中變量的值不是靜態的,i的值并不是添加click事件處理器時的值(比如,當給第一個button添加click事件處理器時i為0,給第二個添加時i為1)。當for循環結束時,變量i的值等于nodes的長度。因此事件被執行時,控制臺會輸出變量i當前的值,即等于nodes的長度。
如果有正在學習前端,不知道怎么學習,學習效率不高或者不知道行業前景,就業前景的也可以來一下我們頭條前端群477149581,有大神,有小白,每晚都會分享一些企業級的知識和面試技巧。
問題2:算法
寫一個判斷質數的isPrime()函數,當其為質數時返回true,否則返回false。
答案
我認為這是在面試中最常問到的一個問題。盡管這個問題反復出現并且也很簡單,但是從面試者提供的答案中能很好地看出面試者的數學和算法能力水平。
首先, 因為JavaScript不同于C或者Java,因此你不能信任傳遞來的數據類型。如果面試官沒有明確地告訴你,你應該詢問他是否需要做輸入檢查,還是不進行檢查直接寫函數。嚴格上說,應該對函數的輸入進行檢查。
需要記住的第二點,負數不是質數。同樣的,1和0都不是,因此,要對這些數字做檢測。另外,2是唯一的既是偶數又是質數的數字。沒有必要用一個循環來驗證4,6,8。再者,如果一個數字不能被2整除,它同樣也不能被4,6,8等整除,因此你的循環需要跳過這些數字。可以采取其他一些更明智的優化手段,我這里采用的是適用于大多數情況的。例如,如果一個數字不能被5整除,它也不會被5的倍數整除。所以,沒有必要檢測10,15,20等等。
最后一點,你不需要檢查比輸入數字的開方還要大的數字。我感覺人們會遺漏掉這一點,并且也不會因為此而獲得消極的反饋。但是,展示出這一方面的知識會給你額外加分。
現在你具備了這個問題的背景知識,下面是總結以上所有考慮的解決方案:
頭條號里有許多web前端學習視頻/源碼,企業常用特效/案例/項目,敬請關注!
碼可以做很多很有趣的事情,有些很簡短的代碼,會讓人印象深刻,而且可以從中學到一些東西。有人發起了這樣一個話題稱“有哪些短小卻令人驚嘆的 JavaScript 代碼?”
百度美女程序員
這個話題,引起很多很多人的關注,大家也都非常踴躍的分享代碼,下面,W3Cschool小師妹就為大家分享其中三段代碼。
代碼片段一:
分享者分享了這樣一段代碼,也沒有說什么。但是網友中還是有很多大牛的,看看這些大牛是怎么評論這段代碼的:
網友一:很有趣呀!
網友二:打開了新世界。
網友三:實現簡單,腦洞很大啊。
網友四:這個迷宮能走得通嗎?能不能寫一段代碼,顯示能連通的路徑。
代碼片段二:
分享者稱,真的可以執行的,還把我嚇壞了。網友是怎么看待這段代碼的呢?
網友一:驚呆了,為啥這都能執行啊?
網友二:我對自己的孤陋寡聞而慚愧。。。刷新我對代碼的認知。
網友三:簡直喪心病狂!
網友四:運行結果竟然是alert("Hello, JavaScript")。
網友五:很強勢。
代碼片段3:
分享者稱,這個正則表達式可以測質數,道理就是構造一個 1111111,強行讓正則引擎實現一個除法。
網友對這段代碼有什么看法呢?
網友一:相當驚艷!!!只是執行效率有點低啊,而且n的位數多了會越界。
網友二:想了好一會兒才明白。
網友三:stack上搜了下才理解。
上面分享的三段代碼,看起來非常精簡。就是這樣精簡的代碼,竟然是可運行的,著實令人驚嘆。不知道各位大俠,上面的三段代碼,你覺得怎樣,可以在下面留言哦。
學編程技術,就到W3Cschool,如果你喜歡我們的文章,可以點擊右上角關注我們;如果你想看到更多IT界的資訊,可以加我們的公眾號。
公眾號:w3cschoolcn
*請認真填寫需求信息,我們會在24小時內與您取得聯系。