Tìm số Amstrong

Yêu cầu:

– Tìm số Amstrong là một số có đặc điểm sau: số đó gồm n chữ số, tổng các lũy thừa bậc n của các chữ số đó và số đó.
Ví dụ: 153 = 1^3 + 5^3 + 3^3. Hãy tìm các số Amstrong nhỏ hơn 1000.

Phân tích:

– Dùng vòng lặp để kiểm tra điều kiện của sô Amstrong.

Code:

/************************************************************
* Author: VNCODING
* History 
* 2014/03/17 first create VNCODING
*************************************************************/
#include "stdio.h"
#include "conio.h"
#include "math.h"

void main()
{
    int i, j, k;
    for(i = 0; i <= 9; i++)
        for(j = 0; j <= 9; j++)
            for(k = 0; k <= 9; k++)
            {
                if(i == 0)
                {
                    if(j == 0)
                    {
                        printf("\n %d^1 = %d", k, k);
                    }
                    else
                    {
                        if((10*j + k) == (pow((float)j, 2)+pow((float)k, 2)))
                        printf("\n %d^2 + %d^2 = %d", j, k, 10*j+k);
                    }
                }
                else
                {
                    if((100*i + 10*j + k) == (pow((float)i, 3) + pow((float)j, 3) + pow((float)k, 3)))
                    printf("\n %d^3 + %d^3 + %d^3 = %d", i, j, k, 100*i + 10*j + k);
                }
            }
    getch();
}

Kết quả:

0^1 = 0
1^1 = 1
2^1 = 2
3^1 = 3
4^1 = 4
5^1 = 5
6^1 = 6
7^1 = 7
8^1 = 8
9^1 = 9
1^3 + 5^3 + 3^3 = 153
3^3 + 7^3 + 0^3 = 370
3^3 + 7^3 + 1^3 = 371
4^3 + 0^3 + 7^3 = 407

Be the first to comment

Leave a Reply

Your email address will not be published.

*