जावा में अभाज्य संख्या की जाँच करते समय, 2 से n-1 तक विभाज्यता की जाँच करने की पारंपरिक विधि की दक्षता में सुधार करने के लिए, sqrt(n) तक की जाँच करने और 6k±1 प्रारूप का उपयोग करने का तरीका प्रस्तुत किया गया है।
स्ट्रीम का उपयोग करके सुस्त मूल्यांकन लागू करने पर, अभाज्य संख्याओं को खोजने वाली स्ट्रीम उत्पन्न करने के लिए केवल आवश्यक तत्व उत्पन्न होने पर ही संचालन किया जा सकता है।
प्रस्तुत सुधार और स्ट्रीम के उपयोग के तरीके से अभाज्य संख्या जाँच एल्गोरिदम को और अधिक कुशलतापूर्वक लागू किया जा सकता है।
आमतौर पर यह जांचने के लिए कि क्या n एक अभाज्य संख्या है, हम 2 से n - 1 तक n को विभाजित करते हैं और देखते हैं कि क्या यह किसी से विभाज्य है।
इस विधि में कुछ अनुकूलन लागू करके इसे और अधिक कुशल बनाया जा सकता है, और स्ट्रीम का उपयोग करके सुस्त मूल्यांकन को लागू किया जा सकता है।
भोली विधि
निम्नलिखित n के लिए एक भोली जाँच है कि क्या यह अभाज्य है।
सुधार
जब n = a x b होता है, तो हम यह मान सकते हैं कि a > b बिना किसी सामान्यता को खोए। अर्थात, हमें केवल i को sqrt(n) तक जांचने की आवश्यकता है। चूँकि sqrt() ऑपरेशन महंगा है, इसलिए हम इसे i * i <= n शर्त से बदल सकते हैं।
5 से अधिक अभाज्य संख्याएँ 6k ± 1 के रूप में लिखी जा सकती हैं। इसलिए, हम i को 6 से बढ़ाकर जांच कर सकते हैं, जिससे जांच की संख्या कम हो जाती है।
सुधारी हुई विधि
सुस्त मूल्यांकन को लागू करने के लिए स्ट्रीम का उपयोग करना
जावा में स्ट्रीम, सूची के विपरीत, परिभाषित होने पर तुरंत गणना नहीं करते हैं।
वे प्रत्येक तत्व की गणना कैसे करें, यह परिभाषित करते हुए प्रतीक्षा करते हैं, और जब तक किसी विशेष तत्व की आवश्यकता नहीं होती, तब तक केवल उस तत्व की गणना के लिए आवश्यक गणना करते हैं।
इसका उपयोग करके, हम अभाज्य संख्याओं को खोजने के लिए एक स्ट्रीम बना सकते हैं, जैसा कि नीचे दिखाया गया है।