a040
輸入說明 :
輸入包含兩個數字n, m(n
0, 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;
}