a040

輸入說明 :

輸入包含兩個數字n, m(n0, m<=1000000),代表所有尋找 armstrong number 的範圍

輸出說明 :

將所有範圍內的 armstrong number 依序由小到大輸出,如果沒有找到請輸出 none.

先寫一個函式,算它是幾位數,然後逐位元運算加起來

#include<stdio.h>
#include<math.h>
int countdigit(int);
int Armstrong(int);
int main(){
    int n,m,i;
    int count;
    while(scanf("%d %d",&n,&m)!=EOF)
    { 
      count=0;
      for(i=n;i<=m;i++)
      { 
           if(Armstrong(i))
           {
               printf("%d ",i);
               count++;
           }                                                    
      } 
      if(count==0)
      printf("none");
      printf("\n");    
    }
return 0;    
}



int countdigit(int number)
{    
    int count=0;
    while( number )
        {
          count++;
          number/= 10;
        }            
    return count;            
}

int Armstrong(int number)
{
   int flag=0;
   double t;
   int sum=0;
   int copy;
   copy=number;
   t=countdigit(number);
   while(number)
       {
           sum+=(int)pow((double)(number%10),t);
           number/=10;
       }
       if(sum==copy)
       flag=1;    

    return flag;
}