Menu Explicit/Hidden

水仙花数php代码

水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。

php
<?php function isNarcissistic($number) { $numDigits = strlen((string)$number); $sum = 0; $temp = $number; while ($temp != 0) { $digit = $temp % 10; $sum += pow($digit, $numDigits); $temp = (int)($temp / 10); } return $sum == $number; } function findNarcissisticNumbers($min, $max) { $narcissisticNumbers = array(); for ($i = $min; $i <= $max; $i++) { if (isNarcissistic($i)) { array_push($narcissisticNumbers, $i); } } return $narcissisticNumbers; } $min = 100; // 最小的三位数 $max = 999; // 最大的三位数 $narcissisticNumbers = findNarcissisticNumbers($min, $max); echo "水仙花数列表:\n"; foreach ($narcissisticNumbers as $num) { echo $num . "\n"; } ?>

这段代码首先定义了一个isNarcissistic函数,用于检查一个数字是否是水仙花数。然后定义了一个findNarcissisticNumbers函数,用于找到指定范围内的所有水仙花数。最后,通过调用findNarcissisticNumbers函数,并指定最小和最大的三位数范围,打印出了找到的所有水仙花数。

如果您希望

性能优化: 当查找更大范围的水仙花数时,可以优化算法以提高性能。例如,可以跳过一些不必要的数字,比如排除那些明显不是水仙花数的数字。

用户输入: 让用户输入最小和最大范围,而不是在代码中硬编码这些值,这样用户可以自定义查找范围。

错误处理: 添加输入验证和错误处理机制,以确保用户输入的是有效范围,并提供友好的错误提示。

更多输出选项: 除了简单地打印出水仙花数列表,还可以考虑其他输出选项,例如将结果以更友好的格式显示,或者将结果保存到文件中。

函数封装: 如果您计划在其他项目中多次使用这些功能,可以将它们封装成类或库,以便在其他地方轻松重用。

php
<?php function isNarcissistic($number) { $numDigits = strlen((string)$number); $sum = 0; $temp = $number; while ($temp != 0) { $digit = $temp % 10; $sum += pow($digit, $numDigits); $temp = (int)($temp / 10); } return $sum == $number; } function findNarcissisticNumbers($min, $max) { $narcissisticNumbers = array(); for ($i = $min; $i <= $max; $i++) { if (isNarcissistic($i)) { array_push($narcissisticNumbers, $i); } } return $narcissisticNumbers; } function printNarcissisticNumbers($narcissisticNumbers) { echo "水仙花数列表:\n"; foreach ($narcissisticNumbers as $num) { echo $num . "\n"; } } // 输入验证 if (isset($argv[1]) && isset($argv[2]) && is_numeric($argv[1]) && is_numeric($argv[2])) { $min = (int)$argv[1]; $max = (int)$argv[2]; if ($min >= 100 && $max <= 999 && $min <= $max) { $narcissisticNumbers = findNarcissisticNumbers($min, $max); printNarcissisticNumbers($narcissisticNumbers); } else { echo "请输入有效的三位数范围。\n"; } } else { echo "用法:php narcissistic.php <最小值> <最大值>\n"; } ?>

这个改进后的代码增加了输入验证和错误处理,让用户可以在命令行中指定最小和最大值。