r - 如何编写一个函数来测试一个正整数 n 是否可以写为两个平方整数之和,即 n = i^2 +j^2 with i; j 2 N>0
问题描述
我一直在努力解决这个问题,但到目前为止我还没有做到。我怎么能用 R 写这段代码?
解决方案
f
实际上你可以像下面这样构建一个用户函数
f <- function(n) {
p <- seq(floor(sqrt(n - 1)))
q <- sqrt(n - p**2)
idx <- q == floor(q)
data.frame(A = p[idx], B = q[idx])
}
这样
> f(9)
[1] A B
<0 rows> (or 0-length row.names)
> f(100)
A B
1 6 8
2 8 6
> f(500)
A B
1 4 22
2 10 20
3 20 10
4 22 4
> f(1000)
A B
1 10 30
2 18 26
3 26 18
4 30 10
其中f(9)
给出一个空数据框意味着9
不能分解为两个平方整数之和。
推荐阅读
- excel - 长时间运行的 VBA 宏被 svchost.exe 中断
- docker - 我正在使用 Azure Devops 构建和推送我的 Docker 映像。如何在使用 Docker 任务进行 buildAndPush 时传递参数?
- python - 相同的数据分为训练集、开发集和测试集
- html - 根据分辨率缩放 Html 列表
- python - Http - 隧道连接失败:Python Web 抓取出现 403 禁止错误
- node.js - 我在 Heroku 上部署应用程序时遇到了 Socket io 问题
- r - 减少 glmnet 中 x 变量之一的权重
- windows - windows 10 确定是否在 PC GPU 上设置了“保持纵横比”
- php - PHP Lookbehind 正则表达式
- c# - 拆分由逗号分隔的 JSON blob 列表(忽略 JSON blob 中的逗号)