Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีพิมพ์เลขอาร์มสตรอง (Armstrong Numbers) 1 ถึง 1000 ใน C#

เลขอาร์มสตรอง (Armstrong Numbers) คืออะไร?

เลขอาร์มสตรอง (หรือ Narcissistic Number) คือเลขที่ผลรวมของเลขยกกำลังจำนวนหลักเท่ากับตัวเลขนั้นเอง

สำหรับเลข 3 หลัก: abc = a³ + b³ + c³ เช่น 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153 ✓

ตัวอย่างโค้ด: หาเลขอาร์มสตรอง 1-1000

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("เลขอาร์มสตรองระหว่าง 1 ถึง 1000:");

        for (int num = 1; num <= 1000; num++)
        {
            int original = num;
            int sum = 0;
            int digits = num.ToString().Length; // จำนวนหลัก

            // คำนวณผลรวมของแต่ละหลักยกกำลัง digits
            int temp = num;
            while (temp > 0)
            {
                int digit = temp % 10;
                sum += (int)Math.Pow(digit, digits);
                temp /= 10;
            }

            if (sum == original)
            {
                Console.WriteLine($"{original} (หลัก={digits})");
            }
        }
    }
}

ผลลัพธ์

เลขอาร์มสตรองระหว่าง 1 ถึง 1000:
1 (หลัก=1)
2 (หลัก=1)
3 (หลัก=1)
4 (หลัก=1)
5 (หลัก=1)
6 (หลัก=1)
7 (หลัก=1)
8 (หลัก=1)
9 (หลัก=1)
153 (หลัก=3)
370 (หลัก=3)
371 (หลัก=3)
407 (หลัก=3)

คำอธิบายอัลกอริทึม

  1. วนลูปตัวเลข 1 ถึง 1000
  2. หาจำนวนหลักด้วย ToString().Length หรือคณิตศาสตร์
  3. แยกแต่ละหลักด้วย modulo 10 (% 10) และหาร 10 (/ 10)
  4. ยกกำลังแต่ละหลักด้วย Math.Pow(digit, digits)
  5. รวมผลลัพธ์ เปรียบเทียบกับตัวเลขเดิม

เลขอาร์มสตรองที่รู้จัก (ฐาน 10)

จำนวนหลักตัวอย่าง
10-9 (ทั้งหมด)
3153, 370, 371, 407
41634, 8208, 9474
554748, 92727, 93084
6548834

การเพิ่มประสิทธิภาพ

คำนวณกำลังก่อนเก็บในอาร์เรย์ int[] powers = new int[10]; for(int i=0;i<10;i++) powers[i] = (int)Math.Pow(i, digits); แล้วใช้ powers[digit] แทน Math.Pow ในลูป