求水仙花数是入门编程同学的基本习题,今天使用R语言来完成这个任务。
水仙花数是三位数即从100
到999
中寻找。其定义是 :x_100,x_10,x_1
是数x
的百位十位个位数.当 其满足
x
100
3
+
x
10
3
+
x
1
3
=
x
x_{100}^3 + x_{10}^3 + x_{1}^3 = x
x1003+x103+x13=x时,成数x
为水仙花数也称水莲花数。
这个任务的主要难点是提取数据每个位上的数据。不过过程还是很简单的,下面直接给出其中一种实现方式的代码。
num3 <- function(x){
x = 100:x
x_100 <- floor(x / 100)
x_10 <- floor((x - 100*x_100)/10)
x_1 <- x - x_100*100 - x_10*10
y = x_1^3 + x_10^3 + x_100^3 == x
Data <- data.frame(x = x, y = y)
Data[y == T, 1]
}
调用函数如下:
> num3(200)
[1] 153
> num3(500)
[1] 153 370 371 407
> num3(800)
[1] 153 370 371 407
> num3(999)
[1] 153 370 371 407