水仙花数也被称为超完全不变数、自恋数、自幂数、阿姆斯特朗数。
其是指一个三位数,它的每个位上的数字的 3次幂之和等于它本身。
(小知识:这种自幂数,三位叫做水仙花、四位叫做四叶玫瑰数、五位叫五角星数)
**水仙花数例如:1^3 + 5^3+ 3^3 = 153。
代码1:输出所有水仙花数
#include<stdio.h>
int main()
{
int a,b,c;
int i;
for(i=100;i<1000;i++){ //使用for循环 定义循环条件 输出所有三位数字
a = i%10;
b=(i/10)%10;
c=i/100;
if(a*a*a + b*b*b +c*c*c ==i ) //if语句 若满足水仙花数条件 则输出
{
printf("%d ",i);
}
}
return 0;
}
输出结果:
代码2: 要求输出所有在m和n范围内的水仙花数。
输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)
输出的水仙花数必须大于等于m,并且小于等于n
要求: 如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。
#include<stdio.h>
#include<math.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF) //多组输入
{
int i=0;
i=a;
int flag=0; //定义输出水仙花数的条件
int c;
while(i++<=b) //循环条件
{
c=pow(i/100,3)+pow((i/10)%10,3)+pow(i%10,3); //使用pow函数
if(c==i) //c==i时 使flag++,便于后续输出水仙花数
{
flag++;
if(flag==1)printf("%d",i);
else printf(" %d",i);
}
}
if(flag==0) printf("no\n");
else printf("\n");
}
return 0;
}
输出结果:
在代码2中为了方便,我们使用了pow函数,小伙伴们可以点击进入了解喔!
有不懂的问题都可以留在评论区,我看到就会解答啦!我们一起努力加油♥