一、水仙花数定义:  
 水仙花数(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 ; 
} 
  
 三、运行结果