问题标签 [hardy-ramanujan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 查找出租车号码
找到第一个n
出租车号码。给定一个值n
。我想找到前 n 个出租车号码。出租车是一个可以用不止一种方式表示为两个完美立方体之和的数字。
(请注意,有两个相关但不同 的集合称为“出租车号码”:2 个多维数据集 的总和,以及 2个正整数立方的总和的最小数字
n
。这个问题是关于前一组,因为后一组只有前六个成员已知)
例如:
我想大致了解一下算法或如何解决问题的 C 代码片段。
java - 具有相对不错的 contains() 解决方案的最小 java 结构
好吧,这是内幕:我正在用 Java 编写一个类,它可以找到第 N 个Hardy 的出租车号码(一个可以由两组不同的两个立方数相加的数字)。我有发现本身,但我迫切需要节省一些空间。为此,我需要尽可能小的数据结构,以便我可以相对轻松地使用或创建像 contains() 这样的方法。我并不特别担心速度,因为我目前的解决方案当然可以让它在时间限制内很好地计算。
简而言之,数据结构需要:
- 为了能够相对简单地实现一个 contains() 方法
- 使用少量内存
- 能够存储大量条目
- 易于与原始长类型一起使用
有任何想法吗?我从哈希图开始(因为我需要测试导致总和的值以确保准确性),然后在我保证可靠答案后转移到哈希集。
任何其他关于如何节省空间的一般想法将不胜感激!
我认为您不需要代码来回答问题,但如果您好奇的话,这里是:
c++ - 在 C++ 中找到与方程匹配的最小整数
可能重复:
查找 Hardy Ramanujan 数
我需要找到最低的自然x
数
并且(k, l, i, j)
必须都不同。
我尝试了以下四个 for 循环,但由于变量无限增加,我无法找到正确的解决方案......
java - 使 Hardy-Ramanujan nth 数查找器更高效
我试图制定一种算法来找到第 n 个 Hardy-Ramanujan 数(一个可以以多种方式表示为 2 个立方体的总和的数字)。除了我基本上用另一个立方体检查每个立方体,看看它是否等于另外 2 个立方体的总和。关于如何提高效率的任何提示?我有点难过。
python - 调试代码:使用 2 个 While 循环查找 Ramanujan 数
我正在尝试使用字典查找:
使用两个嵌套的 while 循环创建一个字典,其键是两个立方体的总和。即遍历所有对 i 和 j,计算 i^3+j^3 直到它变得太大。
2.每当你计算一个新的i^3+j^3时,检查一下是否已经有一个条目。
3.如果是这样,你已经找到了一对新的数字的立方和,因为已经有一对数字的立方和总和相同的值。
这是我的代码:请帮我弄清楚我的代码有什么问题。
c - 类拉马努金数列的 C 程序
1729 年被称为拉马努金数,取自英国数学家GH Hardy在医院探望印度数学家斯里尼瓦萨·拉马努金时的轶事。他讲述了他们的谈话:
“我记得有一次他在普特尼生病时去看他。我曾乘坐 1729 号出租车,并说这个号码在我看来是一个很无聊的号码,我希望它不是一个不利的“不,”他回答,“这是一个非常有趣的数字;它是可以用两种不同方式表示为两个立方体之和的最小数字。”
两种不同方式是:
1729 = 1^3 + 12^3 = 9^3 + 10^3
(来源:https://en. wikipedia.org/wiki/1729_(编号))
下一个这样的数字是4104。
4104 = 16^3 + 2^3 = 9^3 + 15^3
我想找到更多这样的数字。我已经尝试了几次,但无法为其编写代码。我写的代码没有运行。
java - 是 na Ramanujan 数字 - 为什么我在 2^63 附近的值中出现错误?
给定一个数字,测试它是否是 Ramanujan 数(在我们的课程中定义为两个立方体的两种不同方式的总和)。它必须在 n^(1/3) 时间内运行。
我的代码可以正常工作——有时。随着测试值接近 2^63 -1,我遇到了一些随机错误。
奇怪的是,在我更改计数器的起始值以修复不同的错误之前,我通过了该范围内的数字测试。谁能告诉我为什么会这样?
我设置了一个 for 循环来为 a^3 创建值。
然后我设置 b=(na^3)^(1/3) 的值。
然后我测试 b 看它是否是一个整数。如果是这样,请打破循环。
在此处插入了一个 if 测试以使代码正常工作,尽管我不知道为什么需要这样做,这就是这个问题的要点。这个 if 语句为 n=2^63 以上和以下的值设置了两个不同的 for 循环
n < 2^63 的第二个循环以 c=a+1 开始,所以我不重复。这与第一个相同。
n > 2^63 的第二个循环以 c=a 开始。
为什么这会有所作为?为什么相同的代码不适用于越来越大的数字?
抱歉,我的代码太幼稚了,我才刚开始,很多功能在我的课程中都是禁止使用的。(例如,我不能使用 floor() 并且也不允许为它编写自己的函数)。
关于我为什么需要区分较大和较小数字的任何见解?
c - C中的拉马努金数
[Hardy about Ramanujan]:我记得有一次他在普特尼生病时去看他。我曾坐过 1729 号出租车,并说这个号码在我看来是一个沉闷的数字,我希望这不是一个不祥之兆。“不,”他回答,“这是一个非常有趣的数字;它是可以用两种不同方式表示为两个立方体之和的最小数字。”
两种不同的方式是 1³ + 12³ 和 9³ + 10³
我正在编写一系列函数(用 C 语言)来计算与 Ramanujan 数字相关的不同事物。我现在正在尝试编写一个返回第i 个Ramanujan 数字的函数。由于我已经创建了一个检查数字是否为拉马努金数字的函数,因此简单的方法是检查从 0 到无穷大的每个数字。如果给定数字是 Ramanujan 数字,则将计数器加一。一旦计数器等于我要查找的索引,我就会返回该数字。在代码中:
它确实有效,但我有点担心它的效率可能没有那么高。检查每个数字似乎不是最好的解决方案。如果我们考虑第一个数字是 1729,第二个是 4104,则更是如此。似乎要找到第 5 个 Ramanujan 数字需要相当多的步骤(实际上是 32832 步骤,因为它必须检查从 0 开始的每个数字到 32832,这是第 5 个数字)。有更好的方法吗?