自幂数是指一个 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、效果如下
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;
}