什么是水仙花数?
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 3^3+ 5^3 = 153),本文收集了php实现水仙花数的4个例子。
例1,php实现水仙花数:
- for($q=1;$q<=9;$q++){
- for($w=0;$w<=9;$w++){
- for($e=0;$e<=9;$e++){
- if($q*$q*$q + $w*$w*$w + $e*$e*$e ==
- 100*$q + 10*$w + $e){
- echo "$q $w $e "."
"; - }
- }
- }
- }
- ?>
-
例2,php实现水仙花数:
function cube( $n ) - {
- return $n * $n * $n;
- }
function is_narcissistic ( $n ) - {
- $hundreds = floor( $n / 100); //分解出百位
- $tens = floor( $n / 10 ) % 10; //分解出十位
- $ones = floor( $n % 10 ); //分解出个位
- return (bool)(cube($hundreds)+cube($tens)+cube($ones) == $n);
- }
- for ( $i = 100; $i < 1000; ++ $i )
- {
- if ( is_narcissistic($i) )
- echo $i."\n";
- }
- ?>
-
例3,php实现水仙花数:
- //阿姆斯特朗数:一个k位数,它的每个位上的数字的k次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
- class Armstrong {
- static function index(){
- for ( $i = 100; $i < 100000; $i++ ) {
- echo self::is_armstrong($i) ? $i . '
' : ''; - }
- }
- static function is_armstrong($num){
- $s = 0;
- $k = strlen($num);
- $d = str_split($num);
- foreach ($d as $r) {
- $s += bcpow($r, $k);
- }
- return $num == $s;
- }
- }
- Armstrong::index();
-
例4,php实现水仙花数:
- php实现水仙花数_bbs.it-home.org
- function winter($num)
- {
- if($num<1000){
- //定义个位
- $ge=$num%10;
- //定义十位
- $ten=(($num%100)-$ge) /10;
- //定义百位
- /*floor取整,忽略小数点后面的所有数*/
- $hundred=floor($num/100);
- $sum1=$ge*$ge*$ge+$ten*$ten*$ten+$hundred*$hundred*$hundred;
- if($sum1==$num){
- return 1;
- } else{
- return 0;
- }
- } else{
- return -1;
- }
- }
- if(winter(371)==-1) {
- echo "大于1000的数";
- }else{
- if(winter(371)) {
- echo "Yes";
- }
- else{
- echo "No";
- }
- }
- ?>
|