php实现水仙花数的4个示例分享

 水仙花数是指一个 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 "."<p>";
        }
      }
    }
}
?>
 
 
示例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 . '<br>' : '';
  }
 }
 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:
 代码如下:
<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>

时间: 2024-10-31 15:38:24

php实现水仙花数的4个示例分享的相关文章

php实现水仙花数的4个示例分享_php实例

示例1: 复制代码 代码如下: <?phpfor($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 "."<p>";        }     

php实现水仙花数示例分享

 这篇文章主要介绍了php实现水仙花数示例,需要的朋友可以参考下 自幂数,又称阿姆斯特朗数,民间通称水仙花数.实则只有3位自幂数才是水仙花数.4位5位6位等等各有别的叫法. 代码如下: <?php //阿姆斯特朗数:一个k位数,它的每个位上的数字的k次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) class Armstrong {    static function index(){   for ( $i = 100; $i < 100000; $i++ ) {  

java计算任意位水仙花数示例(回文数)_java

可计算任意位水仙花数 复制代码 代码如下: public static void main(String[] args) {  int max = 10;  for (int len = 1; len <= max; len++) {   System.out.println(getNarc(len, ""));  } }  static StringBuffer strb = new StringBuffer();  static String getNarc(int len,

C++实现输出三位数字的水仙花数

问题描述 C++实现输出三位数字的水仙花数 水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和. 编程输出3位水仙花数 解决方案 void main() { int n = 100; int a, b, c; for( n=100;n<=999;n++) { a = n/100; b = n/10%10; c = n%10; if ( n==(a*a*a+b*b*b+c*c*c)) { printf("%d %d %dn",a,b,c); } } }

水仙花数的vfp实现

水仙花数的实现是一个比较经典的算法题,今天我们首先在vfp中来实现它. 首先我们了解一下什么是"水仙花数".所谓水仙花数是指一个n位数,其各位数字立方和等于该数本身的值,例如:153=13+53+33 ,所以153是一个水仙花数. 我们来做一个简单点儿的:求解3位数的水仙花数,即100至999之间的水仙花数.很明显这个程序需要使用循环,并且从水仙花数的概念可知,其重点是求解出循环变量当前值的各位数字的值.剩下的工作就简单了,把求解出的各位数字的立方和与循环变量当前值进行比较,如果相等则

输出100-1000之间所有的“水仙花数”

查看全套"c语言习题集" 题目: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. 1.程序分析: 利用for循环控制100-999个数,每个数分解出个位,十位,百位. 2.程序源代码: #include "stdio.h"#include "conio.h"main(

php中如何求水仙花数优化

水仙花数是指一个n位数(n>=3),它每个位上数字的n次幂之和等于它本身,n为它的位数.(例如:1^3+5^3+3^3 = 153) 水仙花数又称阿姆斯特朗数. 三位的水仙花数有4个:153,370,371,407 四位的水仙花数有3个:1634,8208,9474 五位的水仙花数有3个:54748,92727,93084 六位的水仙花数有1个:548834 七位的水仙花数有4个:1741725,4210818,9800817,9926315 八位的水仙花数有3个:24678050,246780

java我写的这个求水仙花数为什么算不出来

问题描述 java我写的这个求水仙花数为什么算不出来 import java.util.Scanner; public class Task1{ public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入一个数"); int number = input.nextInt(); double s=0; int[] a={0}; int i; f

c语言-C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写。

问题描述 C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. 解决方案 #include <stdio.h> void fun(int n) { if(n<100 || n>1000) return; int a,b,c; c=n%10; b=n/10%10; a=n/100%10; if(a*a*a+b*b*b+c*c*c == n) printf("%dn",n);