بالنظر إلى عدد صحيح 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
جدول المحتويات
[نهج ساذج] عن طريق إضافة الأرقام بشكل متكرر
ويركز النهج على حساب الغرفة الرقمية ر الرقم الناتج عن جمع الأرقام بشكل متكرر حتى يتم الحصول على قيمة مكونة من رقم واحد. وإليك كيف يعمل من الناحية المفاهيمية:
- اجمع الأرقام : ابدأ بإضافة جميع أرقام الرقم المحدد.
- تحقق من النتيجة : إذا كان المجموع رقمًا مكونًا من رقم واحد (أي أقل من 10) توقف وأعده.
- كرر العملية : إذا كان المجموع لا يزال أكثر من رقم واحد، كرر العملية مع مجموع الأرقام. يستمر هذا حتى يتم الوصول إلى مجموع مكون من رقم واحد.
// 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.
لمعرفة المزيد عن تنفيذ التعليمات البرمجية، راجع الجذر الرقمي (المجموع الرقمي المتكرر) لعدد صحيح كبير محدد