什么是水仙花数?
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1+5+3?,则153是一个“水仙花数“。
题目内容
求出0~999之间的所有“水仙花数”并输出。
代码如下
- C/C++
#include <stdio.h>
//水仙花数
//计算一个数a的b次方
int power(int a, int b)
{
int sum = 1;
for (int i = 0; i<b; i++)
{
sum *= a;
}
return sum;
}
//计算一个数有多少位
int digit(int num)
{
int count = 0;
while (num>0)
{
num /= 10;
count++;
}
return count;
}
//判断是否为水仙花数
//如果是则返回1;不是返回0
int narcissusNumber(int num)
{
int digit1 = digit(num);
int sum = 0;
int num2 = num;
for (int i = 0; i<digit1; i++)
{
int a = num2 % 10;
int r = power(a, digit1);
num2 /= 10;
sum += r;
}
if (sum == num)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
for (int i = 0; i < 1000; i++)
{
if (narcissusNumber(i) == 1)
{
printf(" %d ",i);
}
}
return 0;
}
- Java
import java.util.Scanner;
public class NarcissusNumber {
public static void main(String[] args)
{
for (int i =0;i<1000;i++) {
if (narcissusNumber(i))
{
System.out.println(i + "是水仙花数");
}
}
}
//判断是否为水仙花数
//如果是则返回:true
//如果不是返回:false
public static boolean narcissusNumber(int num)
{
int digit = digit(num);
int sum = 0;
int num2 = num;
for(int i=0;i<digit;i++)
{
int a = num2 % 10;
int r = power(a,digit);
num2 /= 10;
sum +=r;
}
if(sum == num)
{
return true;
}
else
{
return false;
}
}
//计算一个数a的b次方
public static int power(int a,int b)
{
int sum = 1;
for(int i =0;i<b;i++)
{
sum *=a;
}
return sum;
}
//计算一个数有多少位
public static int digit(int num)
{
int count = 0;
while(num>0)
{
num /= 10;
count++;
}
return count;
}
}