“水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:
- ABC是一个"3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。
#include <stdio.h>
#include <math.h>
//第一种方法
#if(0)
void main()
{
int i , j;
for(i = 100; i<=999; i++)
{
j = pow(i / 100, 3) + pow(i / 10 % 10 , 3) + pow(i % 10 , 3);
if(j == i) printf("%d\t",i);
}
}
#endif
//第一种方法的缩小版
#if(0)
void main()
{
int i , j;
for(i = 100; i<=999; i++)
{
if((pow(i / 100, 3) + pow(i / 10 % 10 , 3) + pow(i % 10 , 3)) == i) printf("%d\t",i);
}
}
#endif
//第一种方法的扩大版
int main()
{
int i, a, b, c, n;
printf("1000以内的水仙花数:");
for(n = 1; n<=1000; n++)
{
a = n/100; //百位
b = n/10%10; //十位 或者b=n%100/10
c = n%10; //个位
if(pow(a, 3)+pow(b, 3)+pow(c, 3) == n)
{
printf("%d\t", n);
}
}
return 0;
}
//第二种方法
int main()
{
int a, b, c, s;
for(a = 1; a<10; a++)
{
for(b = 0; b<10; b++)
{
for(c = 0; c<10; c++)
{
s = a*100+b*10+c;
if(s == pow(a, 3)+pow(b,3)+pow(c,3)) //好习惯【将数值放到等号的左边】
{
printf("%d\t", s);
}
}
}
}
return 0;
}
pow(x,y):
数学函数,表示x的y次方,使用此函数必须加头文件#include <math.h>