C++ 埃米尔数

2025 年 3 月 24 日 | 4 分钟阅读

在本文中,我们将讨论 C++ 中的反质数及其过程和示例。

什么是反质数?

一个反质数是一个质数但不是回文数,并且即使数字的各位数字反转,它仍然是一个质数。当数字的各位数字反转时生成的质数被称为反质数,它是单词“prime”的反向拼写。反质数不包含像 7、107、113、149 和 157 这样的 1 位质数,或者像 151 或 787 这样的回文质数;相反,将它们翻转以创建新的质数。

概要

如果一个数是质数,并且它的反转数也是质数,那么它就被称为反质数

例如

  • 如果数字是113,它是一个质数;311,该数字的反向,同样是一个质数。因此,113就是一个反质数
  • 如果数字是 23,它是一个质数,但 32,该数字的反向,不是一个质数。因此,23不是一个反质数。

用户提供一个数字输入到这个程序中。首先检查给定的整数是否为质数。如果该数字是质数,则计算其反向数字并验证其质数性。如果其反向数字也是质数,则该数字是反质数;否则不是。

算法

输入:一个数字。

输出:该数字是否为反质数。

过程

示例

让我们看一个 C++ 程序来检查给定数字是否为反质数

输出

Emirp numbers in C++

时间复杂度

上述程序的时间复杂度为 O(x+y+p),其中 'y' 是输入,即给定的数字,'x' 是给定输入数字的反向,'p' 是给定数字的位数。

然而,为了进一步优化,我们可以通过从 2 到 n 的平方根来查找质数。由于 n 最多可以有有限个因子,我们可以说最优化时间复杂度可以是 O(n 的平方根)

空间复杂度

该程序的空间复杂度为 O(1),因为它需要恒定的内存空间来运行程序。