文章目录
水仙花数(Narcissistic number),也被称为自恋数、阿姆斯壮数(Armstrong number),是指一个 n n n位正整数( n ≥ 3 n\geq 3 n≥3),它的每个位上的数字的 n n n次幂之和等于它本身。
举个例子:
153是一个水仙花数,因为 1 3 + 5 3 + 3 3 = 1 + 125 + 27 = 153 1^3+5^3+3^3=1+125+27=153 13+53+33=1+125+27=153。
370也是一个水仙花数,因为 3 3 + 7 3 + 0 3 = 27 + 343 + 0 = 370 3^3+7^3+0^3=27+343+0=370 33+73+03=27+343+0=370。
407也是一个水仙花数,因为 4 3 + 0 3 + 7 3 = 64 + 0 + 343 = 407 4^3+0^3+7^3=64+0+343=407 43+03+73=64+0+343=407。
下面是不同语言实现水仙花数的代码,供大家参考
Python
for i in range(100, 1000):
if i == pow(i // 100, 3) + pow(i // 10 % 10, 3) + pow(i % 10, 3):
print(i)
C++
#include
using namespace std;
int main() {
for (int i = 100; i < 1000; i++) {
int a = i / 100;
int b = i / 10 % 10;
int c = i % 10;
if (i == a * a * a + b * b * b + c * c * c) {
cout << i << " ";
}
}
return 0;
}
Java
public class NarcissisticNumber {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
int a = i / 100;
int b = i / 10 % 10;
int c = i % 10;
if (i == Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3)) {
System.out.print(i + " ");
}
}
}
}
JavaScript
for (let i = 100; i < 1000; i++) {
let a = Math.floor(i / 100);
let b = Math.floor(i / 10 % 10);
let c = i % 10;
if (i === Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3)) {
console.log(i);
}
}
PHP
for ($i = 100; $i < 1000; $i++) {
$a = floor($i / 100);
$b = floor($i / 10 % 10);
$c = $i % 10;
if ($i === pow($a, 3) + pow($b, 3) + pow($c, 3)) {
echo $i . " ";
}
}