使用函数输出水仙花数_PHP水仙花数的实现

872ebc8714dc850bf4887fb195831ec8.png

php中文网最新课程

每日17点准时技术干货分享

3cc0ed2c5631109e29f62a6d72ca1b98.png

c901fbab2b11003b0301dcf776bf8288.gif

php水仙花数是什么?

所谓“水仙花数”,是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。

PHP求水仙花数的程序,有多种写法:

方法示例一:

<?php header("content-type:text/html;charset=utf-8;"); //设置页面编码为 utf-8//以下代码求解1000以内的水仙花数echo '

1000以内的水仙花数:

';for ( $i = 100; $i < 1000; ++ $i ){ $hundreds = floor( $i / 100); //分解出百位 $tens = floor( $i / 10 ) % 10; //分解出十位 $ones = floor( $i % 10 ); //分解出个位 if (bcpow($hundreds,'3')+bcpow($tens,'3')+bcpow($ones,'3') == $i) echo $i."";}?> 输出:
1000以内的水仙花数:153370371407
方法示例二:
<?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"."

"

; } } }} 输出:
153370371407

方法示例三:

<?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";}

方法示例四:

<?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();

输出:

153370371407163482089474547489272793084

方法示例五:

<html><head><title>title>head><body><?php 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";}}?>body>html>

输出:

Yes

-END-

声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值