计算10位数以内的水仙花数

如果一个n位数的各个位的数值的n次幂之和等于它本身,就称这样的数为水仙花数
比如153 = 1^3 + 5^3+ 3^3
现在我们输入一个正整数n,想要输出n位数里面所有的水仙花数
代码如下:

#include
#include 
int main()
{
    int n;                               //位数
    int digit=0;                     //n位数的尾数
    int ret=0;                       //用于记录各个位的幂次
    int sum=0;                    //求各个位的幂次之和
    int m=0;                       //辅助min,求出n位数所在的范围
    int min=1;
    int i=0;
    int j=0;                      //替代i进行运算,在不改变i的值的情况下利用i的值运算
    scanf("%d",&n);
    m=n;
    while(m>1){
        min*=10;
        m--;
    }   
    for(i=min;i<10*min;i++){
        j=i;
        while(j!=0){
            digit=j%10;
            ret=pow(digit,n);           
            sum+=ret;
            j/=10;
        }   
        if(sum==i){
        printf("%d\n",i);
        }   
        sum=0;                //判断完sum是否等于i后就得将sum清零,否则会影响下一次i的判断
        }

    return 0;

} 

网上的水仙花数程序都是3位数的,无聊做了些修改
运行上面的程序,输入位数,就可以得到对应位数的水仙花数了

你可能感兴趣的:(计算10位数以内的水仙花数)