কম্পিউটার টিউটোরিয়াল

পাইথনে একটি দिये রেঞ্জে বিশেষ সংখ্যাগুলোর সংখ্যা বের করার প্রোগ্রাম

একটি পূর্ণসংখ্যার রেঞ্জ দেওয়া আছে এবং ঐ রেঞ্জে বিশেষ সংখ্যাগুলো বের করতে বলা হয়েছে। একটি বিশেষ সংখ্যা হল একটি ধনাত্মক পূর্ণসংখ্যা যার দশমিক রিপ্রেজেন্টেশনে শুধু ১ অঙ্ক থাকে। ১ এর বেশি অঙ্ক থাকলেও সংখ্যাটি বিশেষ হতে পারে যদি সংখ্যাটি তার অঙ্কের সংখ্যা দিয়ে বিভাজ্য হয় এবং ভাগফলটি নিজে একটি বিশেষ সংখ্যা হয়। দেওয়া রেঞ্জ (left_limit, right_limit)-এ কতগুলো বিশেষ সংখ্যা আছে তা রিটার্ন করতে হবে।

ইনপুট left_limit = 5, right_limit = 30 হলে আউটপুট হবে 13।

এই রেঞ্জের বিশেষ সংখ্যাগুলো: 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 24, 28।

সমাধানের ধাপসমূহ

  • যদি right_limit < 10 হয়, তবে right_limit - left_limit + 1 ফেরত দিন
  • len_right := str(right_limit)-এর দৈর্ঘ্য
  • number_list := [0,1,2,3,4,5,6,7,8,9,10,12,14,16,18]
  • j = 2 থেকে len_right + 1 পর্যন্ত:
    • number_list-এর প্রতিটি k-এর জন্য:
      • temp1 := k × j
      • যদি str(temp1)-এর দৈর্ঘ্য == j হয়, তবে number_list-এ temp1 যোগ করুন
      • অন্যথায় যদি len(str(temp1)) > j হয়, তবে লুপ থেকে বের হোন
      • যদি number_list[-1] >= right_limit হয়, তবে লুপ থেকে বের হোন
  • number_list থেকে ডুপ্লিকেট মুছে সর্ট করুন
  • count := 0
  • number_list-এর প্রতিটি temp2-এর জন্য:
    • যদি temp2 >= left_limit এবং temp2 <= right_limit হয়, তবে count := count + 1
  • count ফেরত দিন

উদাহরণ

def strange(left_limit, right_limit):
    if right_limit < 10:
        return right_limit - left_limit + 1
    len_right = len(str(right_limit))
    number_list = [0,1,2,3,4,5,6,7,8,9,10,12,14,16,18]
    for j in range(2, len_right + 1):
        for k in number_list:
            temp1 = k * j
            if len(str(temp1)) == j:
                number_list.append(temp1)
            elif len(str(temp1)) > j:
                break
            if number_list[len(number_list)-1] >= right_limit:
                break
    number_list = list(set(number_list))
    count = 0
    for temp2 in number_list:
        if temp2 >= left_limit and temp2 <= right_limit:
            count = count + 1
    return count

print(strange(5, 30))

ইনপুট

5, 30

আউটপুট

13
  1. পাইথনে গ্রাফে বিশেষ ধরনের সাবগ্রাফ বের করার প্রোগ্রাম

  2. পাইথনে নির্দিষ্ট দৈর্ঘ্যের সাবঅ্যারে থেকে সবচেয়ে বড় সাবঅ্যারে খুঁজে বের করা

  3. পাইথন - দिये गये সংখ্যা পরিসরের মধ্যে প্রাইম সংখ্যার 갯ন বের করুন

  4. গোডাউনে বাম থেকে ডানে বক্স রাখার প্রোগ্রাম