Cullen Number in Java2025 年 5 月 7 日 | 阅读 3 分钟 Cullen 数是整数序列中的一个成员,该序列在 OEIS 序列 **A002064** 中定义。它最早由 **James Cullen** 于 1905 年进行研究。在本节中,我们将讨论 **Cullen 数是什么**,并创建 Java 程序 来检查给定的数字是否为 **Cullen 数**。Cullen 数程序经常出现在 Java 编码面试和学术中。 Cullen 数形式为 **2n*n + 1** 或 **(n*2n) +1** 的数字,其中 n 是整数。大多数 Cullen 数是合数。它表示为 **Cn** 或 **C(n)**。如果 p 是素数且形式为 **8k-3**,则它 divisible by p=2n-1。 如果形式为 **2n*n + 1** 或 **(n*2n) +1** 的任何数字是素数,则称其为 **素数 Cullen 数**。它在 OEIS 序列 **A005849** 中定义。 有时,广义 Cullen 数基 b 定义为形式为 n*bn + 1 的数字,其中 n + 2 > b;如果一个素数可以写成该形式,则称其为 **广义 Cullen 素数**。Woodall 数(**2n*n - 1**)有时也称为**第二类 Cullen 数**。 已知最大的广义 Cullen 素数是 **2805222 * 252805222 + 1**,这是一个长度为 3,921,539 位的数字,由 **Tom Greer** 于 2020 年 3 月发现。 Cullen 数示例3 = 21 * 1 + 1 9 = 22 * 2 + 1 25 = 23 * 3 + 1 其他一些 Cullen 数是 1, 3, 9, 25, 65, 161, 385, 897, 2049, 4609, 10241, 22529, 49153, 106497, 229377, 491521, 1048577, 2228225, 4718593, 9961473, 20971521, 44040193, 92274689, 192937985, 402653185, 838860801, 1744830465, 3623878657, 7516192769, 15569256449, 32212254721。 1 * 21 + 1 = 3,这是一个素数。 141 * 2141 + 1 = 393050634124102232869567034555427371542904833,这也是一个素数。 下一个素数 Cullen 数很难计算,因为它是一个大约 1423 位长的巨大数字。 其他一些素数 Cullen 数是 1, 141, 4713, 5795, 6611, 18496, 32292, 32469, 59656, 90825, 262419, 361275, 481899, 1354828, 6328548, 6679881。 仍然**推测**存在无限多个 Cullen 素数。 Cullen 数 Java 程序有两种方法可以找到 Cullen 数
使用位移左移运算符在下面的程序中,我们使用了位移左移 (<<) 运算符来查找第 n 个 Cullen 数。该 运算符 将一个数字的位向左移动指定的位数。 假设 n=7,根据语句 **(1 << n) * n + 1:** (1<<7) * 7 + 1 (其中 1<<7 等于 1*27 = 128) 128 * 7 + 1 896 + 1 = 897 让我们在 Java 程序中实现上述逻辑。 CullenNumberExample1.java 输出 Enter the number: 7 Cullen Number for the value n = 7 is: 897 让我们看看相同的另一个逻辑。 使用 Lambda 表达式在下面的程序中,我们使用了 **Function** 接口,它是一个函数式接口。它可以作为 lambda 表达式或方法引用的赋值目标。它属于 **java.util.function** 包。Function 接口的语法如下: 其中 T 和 R 是类型参数。**T** 是**函数的输入类型**,**R** 是**函数的输出类型**。 该接口提供了 **apply()** 方法。它将此函数应用于给定的参数。 语法 它接受 **t**(函数参数)作为参数并返回函数结果。 CullenNumberExample2.java 输出 false true |
? 截断(truncate)的英文意思是修剪或剪除,将某物切掉,而修剪的过程称为截断。在计算机科学领域,这个术语经常用于指代数据类型或变量(如字符串、浮点数等)。它是一种...
5 分钟阅读
java.nio.charset 的一个内置方法是 maxBytesPerChar()。对于每个输入字符,CharsetEncoder 返回将创建的最大字节数。使用该值可以确定给定输入句子在最坏情况下的输出缓冲区大小...
阅读 2 分钟
行为驱动开发 (BDD) 是一种软件开发方法论,作为测试驱动开发 (TDD) 的演变而出现。BDD 通过使用通用语言来描述系统的预期行为,强调开发人员、测试人员和业务利益相关者之间的协作。在 Java 生态系统中,BDD 被广泛...
阅读 3 分钟
ORM 代表对象关系映射。它是一种位于 Web 应用程序和数据库之间的中间件应用程序或工具。它在 API 中封装了存储驱动程序的特定实现细节。什么是 ORM?ORM 是一种将 Java 对象和关系之间的数据转换的技术...
阅读 3 分钟
列表是编程中一种数据结构类型,它表示元素的*有序集合*。它允许按顺序存储和访问元素,并支持添加、删除和检索元素。列表通常用于在各种编程语言中组织和操作数据。流是...
阅读 2 分钟
在 Java 中,方法链是连续调用方法的链。它与构造函数链相同,但唯一的区别是方法和构造函数。在本节中,我们将讨论 Java 中的方法链。方法链是常见的...
阅读 2 分钟
在本节中,我们将学习如何创建一个 Java 程序来查找三个数字中的最大值。此外,我们还将学习如何使用三元运算符在 Java 中查找三个数字中的最大值。使用三元运算符 在继续学习程序之前,让我们……
阅读 3 分钟
在本节中,我们将学习 Java 中的断言操作及其相应的示例。我们还将学习相应的断言类型。Java 中的断言是什么?“assert”关键字在 Java 中执行断言操作。断言的概念...
5 分钟阅读
绳索的最小成本是计算机科学和竞争性编程中的一个经典问题。它基于合并绳索以最小化总成本的概念。想象一下,你有几根不同长度的绳索,需要将它们合并成一根...
阅读 8 分钟
Java IO 包提供了几种在 Java 中将字符串追加到现有文件的方法。将字符串追加到文件意味着将新数据添加到现有文件的末尾,而不会覆盖或删除之前的数据。方法:将字符串追加到文件。追加...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India