इस समारोह को लागू करने का सबसे सुंदर तरीका क्या है:
ArrayList generatePrimes(int n)
यह फ़ंक्शन पहले n
प्राइम्स बनाता है (संपादित करें: जहां n>1
), इसलिए generatePrimes(5)
एक ArrayList
साथ वापस आ जाएगा {2, 3, 5, 7, 11}
। (मैं इसे C # में कर रहा हूं, लेकिन मैं जावा कार्यान्वयन से खुश हूं - या उस मामले के लिए कोई अन्य समान भाषा (इसलिए हास्केल नहीं))।
मुझे नहीं पता कि यह फ़ंक्शन कैसे लिखना है, लेकिन जब मैंने कल रात किया तो यह उतना अच्छा नहीं हुआ जितना मैं उम्मीद कर रहा था। यहां वह है जो मैंने जुटाया:
ArrayList generatePrimes(int toGenerate)
{
ArrayList primes = new ArrayList();
primes.Add(2);
primes.Add(3);
while (primes.Count < toGenerate)
{
int nextPrime = (int)(primes[primes.Count - 1]) + 2;
while (true)
{
bool isPrime = true;
foreach (int n in primes)
{
if (nextPrime % n == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
break;
}
else
{
nextPrime += 2;
}
}
primes.Add(nextPrime);
}
return primes;
}
मैं गति के बारे में बहुत चिंतित नहीं हूं, हालांकि मैं नहीं चाहता कि यह स्पष्ट रूप से अक्षम हो। मुझे कोई आपत्ति नहीं है कि किस विधि का उपयोग किया जाता है (भोली या छलनी या कुछ और), लेकिन मैं चाहता हूं कि यह काफी छोटा और स्पष्ट हो कि यह कैसे काम करता है।
संपादित करें : उन सभी के लिए धन्यवाद जिन्होंने जवाब दिया है, हालांकि कई ने मेरे वास्तविक सवाल का जवाब नहीं दिया। दोहराना करने के लिए, मुझे कोड का एक अच्छा साफ टुकड़ा चाहिए था जो अभाज्य संख्याओं की सूची तैयार करता है। मैं पहले से ही जानता हूं कि इसे अलग-अलग तरीकों से कैसे करना है, लेकिन मैं कोड लिखने के लिए प्रवृत्त हूं जो उतना स्पष्ट नहीं है जितना यह हो सकता है। इस धागे में कुछ अच्छे विकल्प प्रस्तावित किए गए हैं:
- मूल रूप से मेरे पास जो कुछ भी था, उसका एक पीटर संस्करण (पीटर स्मिट, jmservera और Rekreativc)
- एराटोस्थनीज (स्टारब्ले) की छलनी का बहुत साफ कार्यान्वयन
- जावा का उपयोग करें
BigInteger
औरnextProbablePrime
बहुत ही सरल कोड के लिए, हालांकि मैं कल्पना नहीं कर सकता कि यह विशेष रूप से कुशल है (dfa) - प्रिज़्म (Maghis) की सूची बनाने के लिए LINQ का उपयोग करें
- एक पाठ फ़ाइल में बहुत सारे अपराध रखें और जब आवश्यक हो तो उन्हें पढ़ें (darin)
संपादित करें 2 : मैंने C # यहां दिए गए तरीकों के एक जोड़े में लागू किया है , और एक अन्य विधि जिसका उल्लेख यहां नहीं किया गया है। वे सभी पहले एन प्राइम को प्रभावी ढंग से पाते हैं (और मेरे पास सिस्टर्स को प्रदान करने की सीमा खोजने का एक अच्छा तरीका है)।