Sunday, January 8, 2012

Find Armstrong Number in C

Finding Armstrong number is again a great exercise for students The exercise involves clever use of modulus operator to extract the digits and then using those digits to perform calculations.

Armstrong Number : These are the special numbers which is equal to the sum of the cube of their own digits.
like 153. since 153= 13+53+33=1+125+27=153 cool isn't it. So how can you find them? Here is the logic.
Logic: use modulus operator to get the last digit of the number. so 153%10=3 (last digit). cube this number, 3*3*3=27, then save it to a variable. again now reduce the number 153. 153/10=15 (see the last digit will be removed :) ). repeat the process till this number becomes 0.
Code:

#include<stdio.h>

int armstrong(int x)
{
    //copy x to k
    int k=x;
    
    //start extracting its digit, 
    // cube the digit and start saving it
    // we will use sum to save the total.
    int sum=0;
    int r=0;
    //r will be used for remainder
    while(k>0)
    {
        r=k%10;
        //now cude the remainder and add it to sum
        sum+=r*r*r;
        //reduce k by 10
        k=k/10;    
    }
    if(x==sum)
    {
        return(1);
    }
    else
    {
        return(0);
    }
}

int main()
{
    int k=0;
    //n will be used how far we want to calculate
    int n;
    printf("\n Enter a number=");
    scanf("%d",&n);
    for(k=0;k<=n;k++)
    {
        if(armstrong(k))
        {
            printf("\n Armstring number=%d",k);
        }
    }
    
}

1 comment: