আমার
যতটুকু মনে হয়েছে তাতে বলতে পারি মৌলিক সংখ্যাটা গণিতবিদদের কাছে একটা হট কেক।কারণ
খুব সহজ-সরল বিষয় নিয়ে ওনাদের চিন্তার কোন শেষ নেই।ওনারা এটার নাড়ী-ভুঁড়ি বের করে
ছেড়েছেন।এবং এখনও নাকি ওনাদের গো+এসনা(বানানটি ভুল হতে পারে) শেষ নেই।তো যাইহোক প্রোগ্রামার বা
কম্পিউটার Scientist
দের সাথে গণিতবিদদের
তো খুব বেশি পার্থক্য নেই।তাই ওনারাও এই নিয়ে বেশ চিন্তা করেন।তো আমি তাদের সেই
চিন্তার একটু প্রচার করি।খুব সহজ-সরল প্রাঞ্জল ভাষায় বলতে গেলে বলতে হচ্ছে যে
সংখ্যাটি ১ আর ওই সংখ্যাটি ছাড়া আর কোন সংখ্যা দ্বারা নিঃশেষে বিভাজ্য না,ওনারাই
মৌলিক সংখ্যা।তবে হ্যাঁ তাঁকে অবশ্যই ১ এর থেকে বড় পূর্ণ সংখ্যা হতে হবে।গণিতের
ভাষায় বলতে হয় যদি P একটি মৌলিক সংখ্যা হয় তাহলে তাঁকে এভাবে
লেখা যায় P = a*b যেখানে a = 1।তাহলে আমরা একটা কোড লেখতে পারি এইরকম করে
if (n
< 2) return 0;
for(i = 2; i < n;
i++)
if(n % i == 0)
return 0;
কিন্তু
আমরা একটু ভাবলে বুঝতে পারব যে এই লুপ টাকে n-1 পর্যন্ত চালানোর দরকার নেই।একে n/2 পর্যন্ত চালালেই হবে।কারণটা নিশ্চয় বোঝা যায় যে কোন একটি সংখ্যার
অর্ধেকের বেশি কোন সংখ্যা দিয়ে নিঃশেষে ভাগ করার বার্থ চেষ্টা না করাই ভাল।
আবার
এইটাও বোঝা যায় যে যেহেতু দুনিয়াতে ২ ই মাত্র মৌলিক সংখ্যা তাই আর কোন জোড়
সংখ্যাকে চেক করার দরকার নেই।তাই আমরা লুপ টাকে ৩ থেকে n/2 পর্যন্ত চালাতে পারি।আর একে দুই দুই করে
বাড়াতে পারি।তাহলে আমাদের প্রোগ্রাম কিন্তু সেরাম হবে।কিন্তু আমরা n/2 পর্যন্ত চেক না করে n এর বর্গমূল পর্যন্ত চেক করলেই হবে।কারণটা
কি? n = a*b তাহলে a অথবা b
অবশ্যই n এর বর্গমূল এর সমান বা ছোট হবে।একটু
চিন্তা কর কেন এটি ব্যবহার করা হবে? আর আমরা বর্গমূল বের করার জন্য math,cmath header ফাইল বা math ক্লাস ব্যবহার করতে পারি।মৌলিক সংখ্যা বের করার জন্য যে কোড হবে তা
এখন তোমাদের নিজ দায়িত্তে কর।আর হ্যাঁ মৌলিক সংখ্যা বের করার জন্য কিন্তু একটা
বিখ্যাত আল্গরিথম আছে তার নাম Sieve of Eratosthenes । এটা নিয়ে অন্য একদিন কথা বলা যাবে।আজ তাহলে শুভ বিদায় J J J
|