php怎么编写水仙花素
时间 : 2023-04-24 20:19:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
水仙花数,又称阿姆斯特朗数,是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如153就是一个水仙花数,因为1的三次方 + 5的三次方 + 3的三次方 = 153。
在PHP中,我们可以通过以下代码来判断一个数是否为水仙花数:
```php
function isNarcissistic($num){
$len = strlen($num); // 获取数字长度
$sum = 0; // 初始化数字的各个位数的n次幂和为0
for($i = 0; $i < $len; $i++){
$sum += pow(substr($num, $i, 1), $len);
// 计算当前位的n次幂并相加
}
return $num == $sum; // 判断是否为水仙花数
}
上述代码中,我们使用了PHP内置的`pow()`函数来计算某个数字的n次幂。`substr()`函数则用来获取数字的每一位数。最后,我们判断该数字是否等于各个位数的n次幂和,如果相等,则该数字为水仙花数。
下面是一个完整的水仙花数检测程序:
```php
function isNarcissistic($num){
$len = strlen($num); // 获取数字长度
$sum = 0; // 初始化数字的各个位数的n次幂和为0
for($i = 0; $i < $len; $i++){
$sum += pow(substr($num, $i, 1), $len);
// 计算当前位的n次幂并相加
}
return $num == $sum; // 判断是否为水仙花数
}
for($i = 100; $i < 1000; $i++){
if(isNarcissistic($i)){
echo $i . "是水仙花数!<br/>";
}
}
在上述代码中,我们使用了一个`for`循环来遍历100-999之间的所有三位数,并调用上述`isNarcissistic()`函数来判断每个数字是否为水仙花数。如果是,则输出结果。
通过这种方法,我们可以很方便地检测任意范围内的水仙花数。
水仙花数是指一个三位数各个数字的立方和等于该数本身的数字。比如153就是一个水仙花数,因为$1^3+5^3+3^3=1+125+27=153$。素数是指除了1和本身以外没有其他因子的数。本文将介绍如何使用PHP编写水仙花数和素数。
1. 编写水仙花数判断程序
首先,我们需要编写一个判断一个三位数是否是水仙花数的程序。可以使用for循环遍历所有的三位数,然后依次判断每个数是否是水仙花数。代码如下:
```php
for ($num = 100; $num <= 999; $num++) {
$digit1 = floor($num / 100); // 百位数字
$digit2 = floor(($num % 100) / 10); // 十位数字
$digit3 = $num % 10; // 个位数字
if ($digit1 ** 3 + $digit2 ** 3 + $digit3 ** 3 == $num) {
echo $num . ' 是水仙花数。' . PHP_EOL;
}
}
上面的代码中,我们遍历所有的三位数,并且将其百位、十位和个位数字分别保存到`$digit1`、`$digit2`和`$digit3`变量中。然后,我们使用`**`运算符(PHP 5.6及以上版本支持)计算每个数字的立方和是否等于该数本身。如果是水仙花数,则输出该数。
2. 编写素数判断程序
接下来,我们需要编写一个判断一个数是否是素数的程序。素数判断可以用试除法,即从2到该数的开方循环遍历,如果该数能整除某个数字,则该数不是素数。如果循环结束后没有找到能整除的数,则该数是素数。代码如下:
```php
function is_prime($num) {
if ($num <= 1) {
return false;
}
$sqrt_num = sqrt($num);
for ($i = 2; $i <= $sqrt_num; $i++) {
if ($num % $i == 0) {
return false;
}
}
return true;
}
for ($num = 2; $num <= 100; $num++) {
if (is_prime($num)) {
echo $num . ' 是素数。' . PHP_EOL;
}
}
上面的代码定义了一个`is_prime`函数,接受一个数字类型的参数,并返回该数是否是素数。然后,我们使用for循环遍历2到100之间的所有数字,然后调用`is_prime`函数判断该数字是否是素数。如果是素数,则输出该数。
3. 完整代码演示
将上述两个程序合并在一起,可以得到一个完整的水仙花数和素数判断程序。代码如下:
```php
// 判断一个三位数是否是水仙花数
for ($num = 100; $num <= 999; $num++) {
$digit1 = floor($num / 100); // 百位数字
$digit2 = floor(($num % 100) / 10); // 十位数字
$digit3 = $num % 10; // 个位数字
if ($digit1 ** 3 + $digit2 ** 3 + $digit3 ** 3 == $num) {
echo $num . ' 是水仙花数。' . PHP_EOL;
}
}
// 判断一个数是否是素数
function is_prime($num) {
if ($num <= 1) {
return false;
}
$sqrt_num = sqrt($num);
for ($i = 2; $i <= $sqrt_num; $i++) {
if ($num % $i == 0) {
return false;
}
}
return true;
}
// 判断一个数是否是素数
for ($num = 2; $num <= 100; $num++) {
if (is_prime($num)) {
echo $num . ' 是素数。' . PHP_EOL;
}
}
这段代码先输出了水仙花数,然后输出了2到100之间的素数。运行这段代码,可以得到如下输出:
153 是水仙花数。
370 是水仙花数。
371 是水仙花数。
407 是水仙花数。
2 是素数。
3 是素数。
5 是素数。
7 是素数。
11 是素数。
13 是素数。
17 是素数。
19 是素数。
23 是素数。
29 是素数。
31 是素数。
37 是素数。
41 是素数。
43 是素数。
47 是素数。
53 是素数。
59 是素数。
61 是素数。
67 是素数。
71 是素数。
73 是素数。
79 是素数。
83 是素数。
89 是素数。
97 是素数。
本文介绍了如何使用PHP编写水仙花数和素数判断程序。读者可以将这些程序应用于更复杂的问题中,以提高自己的编程能力。
上一篇
php怎么把数字替换文字
下一篇
js变量怎么跨域到php
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章