Home > Lập trình > Số Armstrong

Số Armstrong


Số Armstrong: một số tự nhiên có n chữ số được gọi là số Armstrong (còn gọi là narcisstic numbers, plus perfect numbers hoặc perfect digital invariant numbers) nếu tổng các lũy thừa bậc n của tổng các chữ số của nó bằng chính nó.
Ví dụ: 153 là số Armstrong vì 153=13+53+33 

Bài tập: Viết 1 hàm isArmstrong(n) để kiểm tra 1 số nguyên dương n có phải là số Armstrong hay không, sau đó liệt kê tất cả các số Armstrong có 3, 4 chữ số.

Hàm isArmstrong(n) trả về 1 nếu n là số Armstrong, ngược lại hàm trả về 0

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

int isArmstrong(int n)
{
    int tong=0, dem=0, tam=n;

    //Xác định xem số nguyên n có bao nhiêu chữ số
    //và lưu vào biến dem
    do
        dem++;
    while (tam/=10);

    //Tính tổng lũy thừa của các chữ số
    tam=n;
    do
        tong+=pow((tam%10),dem);
    while ((tong<=n) && (tam/=10));

    if (tong==n)
        return 1;
    else
        return 0;
}

void main()
{
    clrscr();
    for (int i=100; i<=9999; i++)
        if (isArmstrong(i))
            printf("%d ",i);
    getch();
}

Kết quả chạy chương trình

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: