এই ফাংশনটি বাস্তবায়নের সর্বাধিক মার্জিত উপায় কী:
ArrayList generatePrimes(int n)
এই ফাংশনটি প্রথম n
প্রাইমগুলি তৈরি করে (সম্পাদনা করুন: যেখানে n>1
), তাই দিয়ে generatePrimes(5)
ফিরে আসবে । (আমি এটি সি # তে করছি, তবে আমি জাভা বাস্তবায়নে খুশি - বা এই বিষয়ে অন্য কোনও অনুরূপ ভাষা (সুতরাং হাস্কেল নয়))।ArrayList
{2, 3, 5, 7, 11}
এই ফাংশনটি কীভাবে লিখতে হয় তা আমি জানি তবে আমি যখন গতকাল রাতে এটি করেছিলাম তখন এটি আশা করে যত সুন্দর ছিল না। আমি এখানে যা এলাম:
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;
}
আমি গতির বিষয়ে খুব বেশি উদ্বিগ্ন নই, যদিও আমি এটি স্পষ্টতই অদক্ষ হতে চাই না। কোন পদ্ধতিটি ব্যবহার করা হবে তা আমি আপত্তি করি না (নিষ্পাপ বা চালুনি বা অন্য কোনও কিছু) তবে আমি এটিটি কীভাবে কাজ করে তা মোটামুটি সংক্ষিপ্ত এবং সুস্পষ্ট হতে চাই।
সম্পাদনা করুন : যারা প্রতিক্রিয়া জানিয়েছেন তাদের সবাইকে ধন্যবাদ, যদিও অনেকেই আমার আসল প্রশ্নের উত্তর দেয়নি। পুনরাবৃত্তি করতে, আমি কোডের একটি সুন্দর পরিষ্কার টুকরা চেয়েছিলাম যা প্রাথমিক সংখ্যার একটি তালিকা তৈরি করে। আমি এটি ইতিমধ্যে বিভিন্ন উপায়ে একগুচ্ছ কীভাবে করতে হয় তা জানি, তবে আমি কোড লেখার প্রবণ যা এটি যতটা পরিষ্কার হতে পারে তেমন পরিষ্কার নয়। এই থ্রেডে কয়েকটি ভাল বিকল্প প্রস্তাব করা হয়েছে:
- আমার কাছে যা ছিল তার একটি সুন্দর সংস্করণ (পিটার স্মিট, জেমভেদার এবং রেক্রিয়াটিভ)
- ইরোটোথিনিস (স্টারব্লিউ) এর চালনি একটি খুব পরিষ্কার প্রয়োগ
- জাভা
BigInteger
এবংnextProbablePrime
খুব সাধারণ কোডের জন্য ব্যবহার করুন , যদিও আমি এটি বিশেষভাবে দক্ষ (ডিএফএ) ভাবতে পারি না - অলসভাবে প্রাইমগুলির তালিকা তৈরি করতে লাইনকিউ ব্যবহার করুন (মাগিস)
- একটি পাঠ্য ফাইলে প্রচুর প্রাইম রাখুন এবং প্রয়োজনীয় হলে সেগুলি পড়ুন (ডারিন)
সম্পাদনা 2 : আমি সি # তে এখানে দেওয়া কয়েকটি পদ্ধতি প্রয়োগ করেছি এবং অন্য একটি পদ্ধতি এখানে উল্লেখ করা হয়নি। তারা সকলেই কার্যকরভাবে প্রথম এন প্রাইমগুলি সন্ধান করে (এবং আমার কাছে চালকদের সরবরাহের সীমা সন্ধান করার একটি শালীন পদ্ধতি রয়েছে)।