一、水仙花数定义:
水仙花数(Narcissistic number)是指一个 n(n≥3) 位数,它的每个数位上的数字的 n 次幂之和等于它本身。例如 3 位数的 153:1³ + 5³ + 3³ = 153
二、C语言计算任意位数的水仙花数代码
# include <stdio.h>
long int TenPower ( int power)
{
if ( power == 0 ) {
return 1 ;
}
long int result = 1 ;
for ( int i = 0 ; i < power; i++ ) {
result *= 10 ;
}
return result;
}
int NumPower ( int base, int power)
{
if ( power == 0 ) {
return 1 ;
}
int result = 1 ;
for ( int i = 1 ; i <= power; i++ ) {
result *= base;
}
return result;
}
int main ( void )
{
int dig;
long int result;
puts ( "请输入位数(三位以上):" ) ;
scanf ( "%d" , & dig) ;
if ( dig < 3 ) {
puts ( "错误!位数必须为2以上!" ) ;
return 0 ;
}
printf ( "%d位数的水仙花数有:" , dig) ;
for ( long int i = TenPower ( dig- 1 ) ; i <= ( TenPower ( dig) - 1 ) ; i++ ) {
long int tmp = i;
result = 0 ;
for ( int j = 1 ; j <= dig; j++ ) {
result += NumPower ( tmp/ TenPower ( dig- j) , dig) ;
tmp = tmp% TenPower ( dig- j) ;
}
if ( i == result) {
printf ( "%ld " , i) ;
}
if ( i == ( TenPower ( dig) - 1 ) ) {
puts ( "" ) ;
}
}
return 0 ;
}
三、运行结果