Friday 15 August 2014

javascript - What does this line mean in a getPrimes algorithm? -


  var fs = की आवश्यकता होती है ('fs'); Var outfile = "primes.txt"; फ़ंक्शन getPrimes (अधिकतम) {var primeSieve = [], i, j, primes = []; (I = 2; i & lt; = max; ++ i) {if (! प्राइमसिव [आई]) {// I को चिह्नित नहीं किया गया है - यह प्राइम primes.push (i) है; के लिए (जे = आई & lt; & lt; 1; जे एंड एलटी; = अधिकतम; जे + = i) {प्राइमसिव [जे] = सच; }}} रिटर्न प्राइम्स; } Fs.writeFileSync (outfile, getPrimes (1000)। स्लाइस (0,100) + ","); Console.log ("स्क्रिप्ट:" + __filename + "\ n उद्धरण:" + getPrimes (1000)। स्लिस (0,100) + "to:" + outfile);   

मेरे पास उस कोड का उपरोक्त भाग है जिसे मैंने एक आउटपुट (किसी और के द्वारा प्रदान किया गया मुख्य एल्गोरिदम) तैयार करने के लिए संशोधित किया है। मैं जावास्क्रिप्ट के लिए नया हूँ और मुझे यकीन है कि निम्न पंक्ति वास्तव में क्या कर रही है और क्या & lt; & lt; ऑपरेटर का मतलब है (मैं जावास्क्रिप्ट वेबसाइट पर पता लगाने में असमर्थ हूं)।

  के लिए (जे = i & lt; & lt; 1; j & lt; = max; j + = i)   

मुझे पता है कि यह मुख्य प्राइमसिव सरणी में संबंधित संख्या को सही के रूप में चिह्नित कर रहा है ताकि वे प्रिमैज़ सरणी को पॉप्यूलेट न करें, हालांकि मुझे नहीं पता कि यह कैसे कर रहा है।

& lt; & lt; ऑपरेटर है बाईं तर्क (एक पूर्णांक मूल्य में रूपांतरण के बाद, यदि आवश्यक हो) दायां तर्क द्वारा निर्दिष्ट बिट्स की संख्या से बाईं ओर स्थानांतरित कर दिया गया है, शून्य के साथ भरना एक के द्वारा बचे हुए स्थानांतरण 2 से गुणा के समान है।

आंतरिक लूप बस true को primeSieve के प्रत्येक तत्व में संग्रहीत करता है जो उस सूचकांक पर है i का एक बहुमूल्य है इस प्रकार, यदि प्राइमसिव [जे] है, तो true है, तो j कुछ पिछले i के बराबर होना चाहिए (इसलिए j प्राइम नहीं हो सकता है)। इसके विपरीत, यदि प्राइमसिव [i] नहीं है, तो true नहीं है, तो यह i के किसी भी पिछले मान का एक बहुमान नहीं था; चूंकि उसमें 2 से i-1 , i के सभी पूर्णांक शामिल हैं तो प्रधान होना चाहिए।

सभी प्राइम इकट्ठा करने के लिए एक निश्चित अधिकतम तक, यह विधि तकनीक से बेहतर है जो स्वतंत्रता के लिए प्रत्येक पूर्णांक का परीक्षण करती है। हालांकि, यह सबसे प्रभावी तरीके से दूर है उदाहरण के लिए, ध्यान दें कि प्राइमसिव का एक तत्व कई बार true पर सेट हो सकता है उदाहरण के लिए, प्राइमसिव [6] सेट होता है जब i == 2 और फिर जब i == 3 । इसके अलावा, i एक बार अधिकतम के वर्गमूल से अधिक हो जाता है, आंतरिक पाश एक कचरा होता है, क्योंकि सभी संमिश्र संख्याएं अधिकतम की गारंटी है उस बिंदु पर चिह्नित किया गया इस सभी कार्यों और संकेतों को और अधिक कुशल तरीके के बारे में और जानें।

पी.एस. वह कोड दिखता है : -)

No comments:

Post a Comment