判断水仙花数
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数,它的每个位上的数字的 3次幂之和 等于它本身
下面列举其他位数的自幂数名字
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
等等…
要判断一个数是不是自幂数,如一个三位数是不是水仙花数,首先
1、判断这个数是几位数。
2、把每一位数字拆开,进行位数次方运算(如124: 1^3 , 2^3 , 4^3,它是一个三位数,所以每一位进行三次方运算 )。
3、把每位数的位数次方加和(如124: 1+8+64)
4、用这个和与原数比较大小,相等则为自幂数
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int number= 0; //存输入数字
int tmp = 0;
int sum = 0;
int count = 1; //数字位数
printf("请输入数字");
scanf("%d",&number);
tmp = number;
while(tmp/10) //这里计算一下数字位数,让程序可以根据位数计算水仙花数,四叶玫瑰数,五角星数等等
{
count++;
tmp = tmp/10;
}
int i = 0;
double sum1 = 0; //为避免int型中5*5会出现24这类情况,所以定义为double型
tmp = number;
for(i=0; i<count; i++)
{
sum1 = pow(tmp%10,count); //pow(a,b) 计算a的b次方。在这里将这个数的每一位取出来,然后进行位数平方操作,然后加和,用于和原数比较
tmp = tmp/10;
sum = sum + sum1;
}
printf("和%d",sum);
if(sum==number)
printf("它是自幂数");
else
printf("它不是自幂数");
return 0;
}