হাস্কেল - 77/108 107 অক্ষর
ব্যবহার: উভয় সমাধানে,% বি টাইপ করলে ফিরে আসবে যে + দ্বি গাউসিয়ান প্রাইম কিনা।
আমি পরিচালিত সর্বনিম্ন, তবে কোনও সৃজনশীলতা বা অভিনয় নেই (77 77 টি)
p n=all(\x->rem n x>0)[2..n-1]
a%0=rem a 4==3&&p(abs a)
0%a=a%0
a%b=p$a^2+b^2
এই সমাধানটি n এর নীচে সমস্ত সংখ্যার মাধ্যমে এটি প্রাইম কিনা তা পরীক্ষা করতে ক্ষমতা দেয়।
অবারিত সংস্করণ:
isprime = all (\x -> rem n x != 0) [2..n-1] -- none of the numbers between 2 and n-1 divide n.
isGaussianPrime a 0 = rem a 4==3 && isprime (abs a)
isGaussianPrime 0 a = isGaussianPrime a 0 -- the definition is symmetric
isGaussianPrime a b = isprime (a^2 + b^2)
পরবর্তী সমাধানটিতে একটি অতিরিক্ত বৈশিষ্ট্য রয়েছে - স্মৃতিচারণ। একবার আপনি যদি পরীক্ষা করে দেখেন যে কোনও পূর্ণসংখ্যা এন প্রাইম হয় কিনা, আপনার কম্পিউটারে সঞ্চিত হবে বলে এন এর চেয়ে কম বা সমান সমস্ত সংখ্যার "প্রাইমিনিস" পুনরায় গণনা করার প্রয়োজন হবে না।
(107 অক্ষর। মন্তব্যগুলি স্পষ্টতার জন্য)
s(p:x)=p:s[n|n<-x,rem n p>0] --the sieve function
l=s[2..] --infinite list of primes
p n=n==filter(>=n)l!!0 --check whether n is in the list of primes
a%0=rem a 4==3&&p(abs a)
0%a=a%0
a%b=p$a*a+b*b
অবারিত সংস্করণ:
primes = sieve [2..] where
sieve (p:xs) = p:filter (\n -> rem n p /= 0) xs
isprime n = n == head (filter (>=n) primes) -- checks if the first prime >= n is equal to n. if it is, n is prime.
isGaussianPrime a 0 = rem a 4==3 && isprime (abs a)
isGaussianPrime 0 a = isGaussianPrime a 0 -- the definition is symmetric
isGaussianPrime a b = isprime (a^2 + b^2)
এটি সমস্ত প্রাইমগুলির একটি অসীম তালিকা গণনার জন্য ইরোটোস্টিনিসের চালনী ব্যবহার করে (কোডের তালিকার জন্য l বলা হয়)। (অসীম তালিকাগুলি হ্যাশেল একটি সুপরিচিত কৌশল)।
অসীম তালিকা থাকা কীভাবে সম্ভব? প্রোগ্রামের শুরুতে, তালিকাটি মূল্যহীন হয় এবং তালিকার উপাদানগুলি সংরক্ষণের পরিবর্তে কম্পিউটারগুলি সেগুলি গণনা করার উপায় সঞ্চয় করে। প্রোগ্রামটি তালিকায় প্রবেশ করার সাথে সাথে এটি আংশিকভাবে অনুরোধ পর্যন্ত নিজেকে মূল্যায়ন করে। সুতরাং, যদি প্রোগ্রামটি তালিকার চতুর্থ আইটেমটির জন্য অনুরোধ জানায়, কম্পিউটার সমস্ত প্রাইমগুলি ইতিমধ্যে মূল্যায়ন না করা সমস্তগুলি গণনা করবে, সেগুলি সংরক্ষণ করবে এবং বাকী অবমূল্যায়িত থাকবে, একবার তাদের গণনার উপায় হিসাবে সংরক্ষণ করা হবে প্রয়োজন ছিল।
মনে রাখবেন যে এগুলি সবই হাস্কেল ভাষার অলস প্রকৃতির দ্বারা অবাধে দেওয়া হয়েছে, এর কোনওটিই কোড থেকে প্রকাশিত নয়।
প্রোগ্রামের উভয় সংস্করণই ওভারলোড হয়েছে, যাতে তারা নির্বিচারে আকারের ডেটা পরিচালনা করতে পারে।
factor
বাশmf
এবংmF
সিজেমে, ...) ব্যবহার করার অনুমতি দেওয়া হয়েছে