কম্পিউটার

অ্যালগরিদম জাভাতে ইতিবাচক মূলদ সংখ্যা তৈরি করতে


মূলদ সংখ্যা − একটি সংখ্যা যা p/q আকারে প্রকাশ করা হয়। শর্ত দেওয়া হয়েছে যে p এবং q উভয়ই পূর্ণসংখ্যা হওয়া উচিত এবং q 0 এর সমান হওয়া উচিত নয়।

ধনাত্মক মূলদ সংখ্যা সেই সংখ্যাগুলি যাদের চূড়ান্ত মান ধনাত্মক। এর জন্য, হয় p এবং q উভয়ই ধনাত্মক বা p এবং q উভয়ই ঋণাত্মক হওয়া উচিত।

এই সমস্যায় একটি নির্দিষ্ট সংখ্যা পর্যন্ত ধনাত্মক র্যান্ডম সংখ্যা তৈরি করতে। আমাদের n-এর জন্য একটি সসীম সংখ্যার ধনাত্মক মূলদ সংখ্যা তৈরি করতে হবে অর্থাৎ আমরা 1 থেকে n-এর মধ্যে মূলদ সংখ্যা খুঁজে পাব। এই অ্যালগরিদমের জন্য, আমরা র্যান্ডম সংখ্যা তৈরি করব যেখানে 1 <=p <=n এবং 1 <=q <=n।

ধারণাটি আরও ভালভাবে ব্যাখ্যা করার জন্য একটি উদাহরণ নেওয়া যাক −

ইনপুট :3আউটপুট :1, ½ , ⅓ , 2 , ⅔ , 3/2 , 3 .

ব্যাখ্যা − এই উদাহরণে, আমরা p এবং q উভয়ের জন্য 1 থেকে 3 এর মধ্যে মান বিবেচনা করব।

এর জন্য ডিজাইন করা অ্যালগরিদম সেটগুলি ব্যবহার করে কাজ করবে যা প্রয়োজনীয় সংমিশ্রণগুলি সর্বোত্তমভাবে তৈরি করার জন্য সেরা ডেটা স্ট্রাকচার। যেমন সেট ম্যাপ করা যেতে পারে এবং ম্যাপিং n থেকে n ক্রম হতে পারে অর্থাৎ সেট1-এর প্রতিটি মান সেট2-এর মানগুলির সাথে সঠিকভাবে ম্যাপ করা যেতে পারে একটি ম্যাপিং তৈরি করে যা প্রয়োজনীয় জোড়া তৈরি করতে পারে। প্রয়োজনীয় জোড়া তৈরি করার জন্য আমরা ইতিবাচক মানগুলির সেট ব্যবহার করব এবং সমাধানগুলি পেতে মানগুলিকে ম্যাপ করব৷

একটি উদাহরণ নেওয়া যাক,

(1,1), (1,2), (1,3)(2,1), (2,2), (2,3)(3,1), (3,2), ( ৩,৩)

আসুন এই মানগুলিকে একটি উল্টানো L আকৃতির ট্রাভার্সাল পদ্ধতিতে পুনরায় সাজাই -

(1,1)(1,2), (2,2) , (2,1)(1,3), (2,3) , (3,3), (3,2), ( 3,1)

ইতিবাচক যুক্তিবাদী অ্যালগরিদম উদাহরণ তৈরিতে আমরা ব্যবহার করেছি এই মানগুলি। আরও ভালভাবে বোঝার জন্য যে আমরা সঠিক একই মানগুলি পেয়েছি, এই মানগুলি পেতে −

এর সাথে ∕টি প্রতিস্থাপন করুন।
1/11/2 , 2/2 , 2/11/3 , 2/3 , 3/3 , 3/2 , 3/1

যদিও 1∕1, 2∕2, 3∕3 এর মত মান আছে যা একই মান নির্দেশ করে। আমরা সর্বশ্রেষ্ঠ সাধারণ ভাজক ব্যবহার করে এই মানগুলি বাদ দেব।

উদাহরণ

 import java.util.ArrayList; import java.util.List; class PositiveRational { ব্যক্তিগত স্ট্যাটিক ক্লাস PositiveRationalNumber { ব্যক্তিগত int numerator; ব্যক্তিগত int হর; সর্বজনীন পজিটিভরেশনাল নম্বর(int numerator, int হর){ this.numerator =লব; this.denominator =হর; } @Override public String toString(){ if (denominator ==1) { return Integer.toString(numerator); } else { ফিরুন Integer.toString(numerator) + '/' + Integer.toString(হর); } } } ব্যক্তিগত স্ট্যাটিক int gcd(int num1, int num2){ int n1 =num1; int n2 =num2; যখন (n1 !=n2) { if (n1> n2) n1 -=n2; অন্য n2 -=n1; } রিটার্ন n1; } প্রাইভেট স্ট্যাটিক লিস্ট generate(int n){ List list =new ArrayList<>(); if (n> 1) { PositiveRationalNumber rational =new PositiveRationalNumber(1, 1); list.add(যৌক্তিক); } এর জন্য (int লুপ =1; লুপ <=n; লুপ++) { int লাফ =1; যদি (লুপ % 2 ==0) লাফ =2; অন্য লাফ =1; জন্য (int row =1; row <=loop - 1; row +=jump) { if (gcd(row, loop) ==1) { PositiveRationalNumber rational =new PositiveRationalNumber(সারি, লুপ); list.add(যৌক্তিক); } } এর জন্য (int col =loop - 1; col>=1; col -=jump) { if (gcd(col, loop) ==1) { PositiveRationalNumber rational =new PositiveRationalNumber(loop, col); list.add(যৌক্তিক); } } } ফিরতি তালিকা; } পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আর্গস){ তালিকা<ধনাত্মক যুক্তিসংখ্যা>যুক্তি =জেনারেট(5); System.out.println(rationals.stream(). মানচিত্র(PositiveRationalNumber::toString). reduce((x, y) -> x + "," + y).get()); }}

আউটপুট

<প্রে>1, 1/2, 2, 1/3, 2/3, 3/2, 3, 1/4, 3/4, 4/3, 4, 1/5, 2/5, 3/5 , 4/5, 5/4, 5/3, 5/2, 5
  1. জাভা প্রোগ্রাম প্রথম n প্রাকৃতিক সংখ্যার কিউব যোগফল

  2. জাভাতে EnumMap ক্লাস

  3. কিভাবে জাভাতে একটি অসমর্থিত অপারেশন এক্সেপশন তৈরি করবেন?

  4. পাইথন মূলদ সংখ্যা (ভগ্নাংশ)