水仙花”数。从键盘输入两个正整数m和n(m≥1,n≤1000),输出m和n之间所有的“水仙花”数,要求每行显示2个“水仙花”数。“水仙花”数是指各位数字的立方和等于这个数。如153的各位数字立方和是13+5+3=153,所以153是一个“水仙花”数。
#include <stdio.h>
int fib(int m);
int main()
{
int n,m,i;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
for(i=m;i<n;i++)
if(fib(i))
printf("%d\n",fib(i));
return 0;
}
int fib(int i)
{
int s=0,a,copy;
copy=i;
do{
a=i%10;
i/=10;
s+=a*a*a;
}while(i);
if(s==copy)return s;
return 0;
}
https://blog.csdn.net/qq_51641495/article/details/109699657
不知道你这个问题是否已经解决, 如果还没有解决的话://方法1
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 0; i <= 100000; i++)
{
//判断i是否为自幂数
//1.计算i的位数
int n = 1;
int tmp = i;
while (tmp /=10)
{
n++;
}
//2.计算每一位的n的次方之和
tmp = i;
int sum = 0;
while (tmp)//1234
{
sum += (int)pow(tmp % 10, n);
tmp /=10;
}
//比较
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
//求3位数的水仙花
#include<stdio.h>
int main()
{
int i;
int a, b, c;//a为个位数字,b为十位数字,c为百位数字
for (i = 100; i < 1000; i++)
{
a = i % 10;
b = i / 10 % 10;
c = i / 100;
if (i == (a * a * a + b * b * b + c * c * c))
{
printf("%d\n", i);
}
}
return 0;
}