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

เลขอาร์มสตรอง (Armstrong Numbers) ระหว่างสองจำนวนเต็ม


จำนวนเต็มจะถูกเรียกว่าเลขอาร์มสตรอง (Armstrong number) ของออเดอร์ n หากแยกตัวเลขแต่ละหลักแล้วยกกำลังสามและบวกกัน ผลรวมจะเท่ากับตัวเลขเดิม คือ abcd... = a3 + b3 + c3 + d3 + ...

ในกรณีของเลขอาร์มสตรอง 3 หลัก ผลรวมของกำลังสามของแต่ละหลักจะเท่ากับตัวเลขเอง ตัวอย่างเช่น:

153 = 13 + 53 + 33 // 153 เป็นเลขอาร์มสตรอง

Input: Enter two numbers(intervals): 999 9999 Output: Armstrong numbers between 999 and 9999 are: 1634 8208 9474

คำอธิบาย

1634 = 13+63+33+43 = 1+216+27+64 = 1634

วิธีการที่นำไปใช้งานด้านล่างนี้เรียบง่าย เราวนลูปผ่านตัวเลขทั้งหมดในช่วงที่กำหนด สำหรับแต่ละตัวเลข เรานับจำนวนหลักก่อน ให้จำนวนหลักของตัวเลขปัจจุบันเป็น n จากนั้นหาผลรวมของกำลังสามของทุกหลัก หากผลรวมเท่ากับตัวเลขนั้น เราจะพิมพ์ตัวเลขนั้นออกมา

ตัวอย่างโค้ด C

#include <stdio.h>
#include <math.h>

int main() {
    int low = 100;
    int high = 400;
    printf("The amstrong numbers between %d and %d is \n", low, high);
    for (int i = low + 1; i < high; ++i) {
        int x = i;
        int n = 0;
        while (x != 0) {
            x /= 10;
            ++n;
        }
        int pow_sum = 0;
        x = i;
        while (x != 0) {
            int digit = x % 10;
            pow_sum += pow(digit, n);
            x /= 10;
        }
        if (pow_sum == i)
            printf("%d ", i);
    }
    printf("\n");
    return 0;
}