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

Posted 统计学小王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于R语言——水仙花数(向量化运算)的主要内容,如果未能解决你的问题,请参考以下文章

R语言向量化运算:apply函数族用法心得

R语言 | 向量化操作purrr包

“水仙花数”C语言程序

R语言学习笔记(二十一五):如何如何提升R语言运算的性能以及速度

R语言矩阵运算

求水仙花数c语言