请问玫瑰花数怎么求呀

自幂数是指一个 n 位整数,它的每个位上的数字的 n 次幂之和等于它本身。当n为4时,自幂数称为玫瑰花数,试编程输出1000~9999范围内所有的玫瑰花数。(形如14+64+34+44=1634)


#include <stdio.h>
int main()
{
    int i, num1, num2, num3, num4,finally;
    for (i = 1000; i <= 9999; i++) {
        num1 = i / 1000;
        num2 = (i - num1 * 1000) / 100;
        num3 = (i % 100) / 10;
        num4 = (i % 100) % 10;
        finally = num1 * num1 * num1 * num1 + num2 * num2 * num2 * num2 + num3 * num3 * num3 * num3 + num4 * num4 * num4 * num4;
        if (i ==finally )
            printf("玫瑰花数为:%d \n", i);
    }
    return 0;
}

#include <stdio.h>

int main(void) {
    int a,b,c,d;
    for(int i=1000;i<=9999;i++){
        a=i/1000;
        b=(i-a*1000)/100;
        c=(i-a*1000-b*100)/10;
        d=i%10;
        if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==i){
            printf("%d\n", i);
        }
    }
    return 0;
}

如下:


#include <stdio.h>
#include<math.h>
int main()
{
    int a,b,c,d;
    for (int i =1000; i < 10000; i++)
    {
        a = i % 10;
        b = (i / 10) % 10;
        c = (i / 100) % 10;
        d = (i / 1000) % 10;
        if ((pow(a, 4) + pow(b, 4) + pow(c, 4) + pow(d, 4)) == i)
            printf("%d 是玫瑰花数\n", i);
    }
    return 0;
}

温馨提示:若问题解决了,望给个采纳,谢谢!若有其他疑问随时咨询
1、效果如下

img

2、代码如下

/*
自幂数是指一个 n 位整数,它的每个位上的数字的 n 次幂之和等于它本身。
当n为4时,自幂数称为玫瑰花数,试编程输出1000~9999范围内所有的玫瑰花数。
(形如1^4+6^4+3^4+4^4=1634)
*/

#include<stdio.h>
#include<math.h>
//输出100000以内的自幂数。
//自幂数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。
int main()
{
    int n=4;
    int s=1000;
    int e=9999;
    
    printf("\n");
    for(int i=s;i<=e;i++){
        int unit = i / 1 % 10;
        int ten = i / 10 % 10;
        int hundred = i / 100 % 10;
        int thousand = i / 1000 % 10;
        
        int newValue=pow(unit,n)+pow(ten,n)+pow(hundred,n)+pow(thousand,n);
        
        if(newValue==i)
            printf("玫瑰花数:%d\n",newValue);
    }
    printf("\n");
    
    return 0;
}