R语言——水仙花数(向量化运算)

求水仙花数是入门编程同学的基本习题,今天使用R语言来完成这个任务。
水仙花数是三位数即从100999中寻找。其定义是 :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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

统计学小王子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值