ধরুন আমাদের n আকারের একটি ক্রম সংখ্যা আছে। আমাদের সংখ্যার পরের সংখ্যার সর্বোচ্চ আকার খুঁজে বের করতে হবে যেখানে প্রতিটি জোড়া (p, q) একটি সুন্দর জোড়া? একটি পাইটকে সুন্দর জোড়া বলা হয় যদি এবং শুধুমাত্র যদি এটি এই শর্তগুলির মধ্যে একটি ধারণ করে:1. p এর স্বতন্ত্র মৌলিক ভাজকের সংখ্যার সমতা b এর সমান। উদাহরণস্বরূপ, 18 মানের দুটি স্বতন্ত্র মৌলিক ভাজক রয়েছে:2 এবং 3. 2. p এর সমস্ত ধনাত্মক ভাজকের যোগফলের সমতা q এর সমান।
সুতরাং, ইনপুট যদি nums =[2,3,6,8] এর মত হয়, তাহলে আউটপুট হবে 3
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=সংখ্যার আকার
- তিনটি খালি তালিকা cnt, মোট, ফলাফল সংজ্ঞায়িত করুন
- সংখ্যায় প্রতিটি i জন্য, করুন
- গণনা :=০, মোট :=০
- প্রাইম :=একটি নতুন তালিকা
- সংখ্যায় প্রতিটি j এর জন্য, করুন
- যদি (2 থেকে j পরিসরের সকল k-এর জন্য j mod k) সত্য হয়, তাহলে
- প্রাইম এর শেষে j সন্নিবেশ করান
প্রাইম-এ প্রতিটি j-এর জন্য - যদি (2 থেকে j পরিসরের সকল k-এর জন্য j mod k) সত্য হয়, তাহলে
- যদি i mod j 0 হয়, তাহলে
- গণনা :=গণনা + 1
- করুন
- যদি গণনা জোড় হয়, তাহলে
- cnt-এর শেষে 'বিজোড়' ঢোকান
- অন্যথায়,
- cnt-এর শেষে 'Even' ঢোকান
1 থেকে i রেঞ্জের মধ্যে j-এর জন্য - করুন
- যদি i mod j 0 এর মত হয়, তাহলে
- tot :=tot + j
- যদি i mod j 0 এর মত হয়, তাহলে
- যদি tot বিজোড় হয়, তাহলে
- মোট শেষে 'বিজোড়' ঢোকান
- অন্যথায়,
- মোট শেষে 'জোর' সন্নিবেশ করান
- i+1 থেকে n - 1 রেঞ্জে j-এর জন্য
- করুন
- যদি cnt[i] cnt[j] এর সমান বা মোট[i] মোট[j] এর সমান, তাহলে
- ফলাফলের শেষে সংখ্যা [i] ঢোকান
- যদি j n-2 এর মত হয়, তাহলে
- ফলাফলের শেষে সংখ্যা [j] ঢোকান
- যদি cnt[i] cnt[j] এর সমান বা মোট[i] মোট[j] এর সমান, তাহলে
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): n = len(nums) cnt = [] total = [] result = [] for i in nums: count = 0 tot = 0 prime = [] for j in nums: if all(j % k for k in range(2, j)) == True: prime.append(j) for j in prime: if i % j == 0: count += 1 if count % 2: cnt.append('odd') else: cnt.append('even') for j in range(1,i+1): if i % j == 0: tot += j if tot % 2: total.append('odd') else: total.append('even') for i in range(n-1): for j in range(i+1, n): if cnt[i] == cnt[j] or total[i] == total[j]: result.append(nums[i]) if j == n-1: result.append(nums[j]) result = list(set(result)) return len(result) nums = [2,3,6,8] print(solve(nums))
ইনপুট
15, 3, 8
আউটপুট
3