ডিজিটাল রুট (Digital Root)

একটি সংখ্যার প্রতিটি ডিজিটকে একত্রে বার বার যোগ করার মাধ্যমে একটি ডিজিট বিশিষ্ট সংখ্যাই রূপান্তর করার প্রক্রিয়াকেই ডিজিটাল রুট বলে। উদাহরণঃ

173 এর ডিজিটাল রুট নির্ণয়:

1 + 7 + 3 = 11
1 + 1 = 2

উত্তরঃ 2

9256987 এর ডিজিটাল রুট নির্ণয়

9 + 2 + 5 + 6 + 9 + 9 + 7 = 46
4 + 6 = 10
1 + 0 = 1

উত্তরঃ 1

এইভাবে ডিজিটাল রুট বের করার পদ্ধতিকে Naive method বলা হয়। যা প্রোগ্রামিঙয়ের মাধ্যমে বার বার লুপ চালিয়ে বের করা যায় (নিজে করো)

এবার আস আরেকটি সহজ পদ্ধতি চিন্তা করি

DigitalRoot(1) = 1
DigitalRoot(2) = 2
DigitalRoot(3) = 3

... ... ...

DigtalRoot(9) = 9

DigitalRoot(10) =1 + 0 -> 1
DigtalRoot(11) = 1 + 1 -> 2
DigitalRoot(12) = 1 + 2 -> 3
DigitalRoot(13) = 1 + 3 = 4

... ... ...

DigitalRoot(18) = 1 + 8 = 9

... ... ...

কি দেখতে পেলে আমরা যদি পর পর প্রতিটি সংখ্যার digital root বের করতে থাকি তাহলে বার বার ১, ২, ৩, ৪, ৫, ৬, ৭ , ৮, ৯ এই মান গুলো পর পর বার বার আসছে। অর্থাৎ শেষবার মান ৯ আসার পর আবারও ১ থেকে মান আসা শুরু হচ্ছে। একই কাজ আমারা ৯ দ্বারা ভাগ করে ভাগশেষ বের করার মাধ্যমে করতে পারি। তবে যখন আমাদের ভাগশেষ ০ আসবে তবে আমাদের ডিজিটাল রুট কে ৯ ধরতে হবে। কিন্তু যদি ০ এর ডিজিটাল রুট বের করতে বলে তাহলে ভাগশেষ ০ হলেও ডিজিটাল রুট ০ ই হবে।

1 mod 9 = 1
2 mod 2 = 2
...
9 mod 9 = 0 (০ কে আমারা ৯ ধরব)

10 mod 9 = 1
11 mod 9 = 2
12 mod 9 = 3
13 mod 9 = 4
...
18 mod 9 = 0 (9)
... ... ...

অর্থাৎ ডিজিটাল রুট নির্ণয়ের সূত্রটি হবে:
alt text

Python code snippet:

def dr(n):
    if n == 0:
        return 0
    m = n % 9
    return m if m != 0 else 9

যার Big(o) Complexity: O(1)

16