إيجاد مجموع أرقام العدد حتى يصبح المجموع رقما واحدا

إيجاد مجموع أرقام العدد حتى يصبح المجموع رقما واحدا
جربه على ممارسة GfG

بالنظر إلى عدد صحيح n، نحتاج إلى إيجاد مجموع أرقامه بشكل متكرر حتى تصبح النتيجة رقمًا مكونًا من رقم واحد.

أمثلة:

مدخل: ن = 1234
الإخراج: 1
توضيح:
الخطوة 1: 1 + 2 + 3 + 4 = 10
الخطوة 2: 1 + 0 = 1

مدخل: ن = 5674
الإخراج: 4
توضيح:
الخطوة 1: 5 + 6 + 7 + 4 = 22
الخطوة 2: 2 + 2 = 4

جدول المحتويات

[نهج ساذج] عن طريق إضافة الأرقام بشكل متكرر

ويركز النهج على حساب الغرفة الرقمية ر الرقم الناتج عن جمع الأرقام بشكل متكرر حتى يتم الحصول على قيمة مكونة من رقم واحد. وإليك كيف يعمل من الناحية المفاهيمية:

  1. اجمع الأرقام : ابدأ بإضافة جميع أرقام الرقم المحدد.
  2. تحقق من النتيجة : إذا كان المجموع رقمًا مكونًا من رقم واحد (أي أقل من 10) توقف وأعده.
  3. كرر العملية : إذا كان المجموع لا يزال أكثر من رقم واحد، كرر العملية مع مجموع الأرقام. يستمر هذا حتى يتم الوصول إلى مجموع مكون من رقم واحد.
C++
   // C++ program to find the digit sum by    // repetitively Adding its digits   #include          using     namespace     std  ;   int     singleDigit  (  int     n  )     {      int     sum     =     0  ;      // Repetitively calculate sum until      // it becomes single digit      while     (  n     >     0     ||     sum     >     9  )     {      // If n becomes 0 reset it to sum       // and start a new iteration.      if     (  n     ==     0  )     {      n     =     sum  ;      sum     =     0  ;      }      sum     +=     n     %     10  ;      n     /=     10  ;      }      return     sum  ;   }   int     main  ()     {      int     n     =     1234  ;      cout      < <     singleDigit  (  n  );      return     0  ;   }   
C
   // C program to find the digit sum by    // repetitively Adding its digits   #include         int     singleDigit  (  int     n  )     {      int     sum     =     0  ;      // Repetitively calculate sum until      // it becomes single digit      while     (  n     >     0     ||     sum     >     9  )     {      // If n becomes 0 reset it to sum       // and start a new iteration.      if     (  n     ==     0  )     {      n     =     sum  ;      sum     =     0  ;      }      sum     +=     n     %     10  ;      n     /=     10  ;      }      return     sum  ;   }   int     main  ()     {      int     n     =     1234  ;      printf  (  '%d'       singleDigit  (  n  ));      return     0  ;   }   
Java
   // Java program to find the digit sum by    // repetitively Adding its digits   class   GfG     {      static     int     singleDigit  (  int     n  )     {      int     sum     =     0  ;      // Repetitively calculate sum until      // it becomes single digit      while     (  n     >     0     ||     sum     >     9  )     {      // If n becomes 0 reset it to sum       // and start a new iteration.      if     (  n     ==     0  )     {      n     =     sum  ;      sum     =     0  ;      }      sum     +=     n     %     10  ;      n     /=     10  ;      }      return     sum  ;      }      public     static     void     main  (  String  []     args  )     {      int     n     =     1234  ;      System  .  out  .  println  (  singleDigit  (  n  ));      }   }   
Python
   # Python program to find the digit sum by    # repetitively Adding its digits   def   singleDigit  (  n  ):   sum   =   0   # Repetitively calculate sum until   # it becomes single digit   while   n   >   0   or   sum   >   9  :   # If n becomes 0 reset it to sum    # and start a new iteration   if   n   ==   0  :   n   =   sum   sum   =   0   sum   +=   n   %   10   n   //=   10   return   sum   if   __name__   ==   '__main__'  :   n   =   1234   print  (  singleDigit  (  n  ))   
C#
   // C# program to find the digit sum by    // repetitively Adding its digits   using     System  ;   class     GfG     {      static     int     singleDigit  (  int     n  )     {      int     sum     =     0  ;      // Repetitively calculate sum until      // it becomes single digit      while     (  n     >     0     ||     sum     >     9  )     {      // If n becomes 0 reset it to sum       // and start a new iteration.      if     (  n     ==     0  )     {      n     =     sum  ;      sum     =     0  ;      }      sum     +=     n     %     10  ;      n     /=     10  ;      }      return     sum  ;      }      static     void     Main  ()     {      int     n     =     1234  ;      Console  .  WriteLine  (  singleDigit  (  n  ));      }   }   
JavaScript
   // JavaScript program to find the digit sum by    // repetitively Adding its digits   function     singleDigit  (  n  )     {      let     sum     =     0  ;      // Repetitively calculate sum until      // it becomes single digit      while     (  n     >     0     ||     sum     >     9  )     {      // If n becomes 0 reset it to sum       // and start a new iteration.      if     (  n     ===     0  )     {      n     =     sum  ;      sum     =     0  ;      }      sum     +=     n     %     10  ;      n     =     Math  .  floor  (  n     /     10  );      }      return     sum  ;   }   // Driver Code   const     n     =     1234  ;   console  .  log  (  singleDigit  (  n  ));   

الإخراج
1 

تعقيد الوقت: يا (سجل 10 ن) ونحن نكرر على أرقام الرقم.
المساحة المساعدة: يا(1)

[المنهج المتوقع] استخدام الصيغة الرياضية

نحن نعلم أنه يمكن التعبير عن كل رقم في النظام العشري كمجموع أرقامه مضروبة في قوى العدد 10. على سبيل المثال، يتم تمثيل الرقم على النحو التالي: abcd يمكن كتابتها على النحو التالي:

اي بي سي دي = أ*10^3 + ب*10^2 + ج*10^1 + د*10^0

يمكننا فصل الأرقام وإعادة كتابتها على النحو التالي:
اي بي سي دي = أ + ب + ج + د + (أ*999 + ب*99 + ج*9)
ABCD = أ + ب + ج + د + 9*(أ*111 + ب*11 + ج)

وهذا يعني أنه يمكن التعبير عن أي رقم كمجموع أرقامه بالإضافة إلى مضاعفات 9.
لذلك إذا أخذنا modulo مع 9 على كل جانب
ABCD % 9 = (أ + ب + ج + د) % 9 + 0

وهذا يعني أن الباقي عند قسمة abcd على 9 يساوي الباقي حيث مجموع أرقامه (a + b + c + d) مقسوم على 9.

إذا كان مجموع الأرقام نفسها يتكون من أكثر من رقم واحد، فيمكننا أيضًا التعبير عن هذا المجموع كمجموع أرقامه بالإضافة إلى مضاعف 9. وبالتالي، فإن أخذ modulo 9 سيزيل مضاعف 9 حتى يصبح مجموع الأرقام رقمًا واحدًا.

ونتيجة لذلك فإن مجموع أرقام أي رقم سيكون مساوياً لمودولو 9. إذا كانت نتيجة عملية مودولو صفر فهذا يشير إلى أن النتيجة المكونة من رقم واحد هي 9.
لمعرفة المزيد عن تنفيذ التعليمات البرمجية، راجع الجذر الرقمي (المجموع الرقمي المتكرر) لعدد صحيح كبير محدد