21xrx.com
2024-12-22 20:33:01 Sunday
登录
文章检索 我的文章 写文章
C++编程:求1000以内的所有可逆素数
2023-07-06 11:48:48 深夜i     --     --
C++ 编程 可逆素数 1000 算法

C++编程是一项非常重要的计算机技能,能够让程序员们高效地解决各种问题。在本文中,我们将探讨如何使用C++编程来找到1000以内的所有可逆素数。

首先,我们需要了解什么是可逆素数。可逆素数是一个素数,如果将其数字颠倒后,得到的数字也是素数,那么这个数就是可逆素数。例如,13和31都是可逆素数。

现在,我们需要写一段C++代码,来判断一个数字是否为素数。素数是只能被1和它本身整除的数字,因此我们可以用一个循环来遍历数字的所有可能因数,并判断是否有其他因数除了1和本身。

下面是C++代码,用于检查一个数是否为素数:


bool isPrime(int n) {

  if (n <= 1) // 1不是素数

    return false;

  

  for (int i = 2; i <= sqrt(n); i++) { // 从2开始遍历到n的平方根

    if (n % i == 0) 说明不是素数

      return false;

    

  }

  return true; // n只能被1和本身整除,是素数

}

现在,我们已经有了一个函数isPrime,用于检查一个数是否是素数。接下来,我们需要写一个函数,用于检查一个数是否为可逆素数。

下面是C++代码,用于检查一个数是否为可逆素数:


bool isReversiblePrime(int n) {

  if (isPrime(n)) { // 如果n是素数

    int reverse = 0;

    int original = n;

    while (original > 0) { // 颠倒n的数字

      reverse = reverse * 10 + original % 10;

      original /= 10;

    }

    return isPrime(reverse); // 检查颠倒后的数字是否是素数

  }

  return false; // 如果n不是素数,它也不可能是可逆素数

}

现在,我们已经有了一个函数isReversiblePrime,用于判断一个数字是否是可逆素数。最后,我们可以用一个循环来遍历1000以内所有数字,并检查它们是否是可逆素数。

下面是C++代码,用于找到1000以内的所有可逆素数:


#include <iostream>

using namespace std;

bool isPrime(int n) {

  if (n <= 1)

    return false;

  

  for (int i = 2; i <= sqrt(n); i++) {

    if (n % i == 0)

      return false;

    

  }

  return true;

}

bool isReversiblePrime(int n) {

  if (isPrime(n)) {

    int reverse = 0;

    int original = n;

    while (original > 0) {

      reverse = reverse * 10 + original % 10;

      original /= 10;

    }

    return isPrime(reverse);

  }

  return false;

}

int main() {

  for (int i = 2; i < 1000; i++) { // 遍历1000以内所有数字

    if (isReversiblePrime(i)) // 如果是可逆素数

  }

  cout << endl;

  return 0;

}

通过上述代码运行,我们可以找到1000以内的所有可逆素数,它们分别是13、17、31、37、71、73、79、97、107、113、149、157、167、179、199、311、337、347、359、389、701、709、733、739、743、751、761、769、907、937、941、953、967和971。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复