C++求七位全数字的质数案例代码

题目描述

如果一个 7 位数恰好使用了 1 至 7 每个数字各一次,我们就称其为全数字的。例如,2156437 就是一个 7 位全数字数,同时它恰好也是一个质数。
输出所有全数字的质数。

案例代码

要找到所有的七位全数字质数,我们可以编写一个程序来进行计算。以下是一个简单的C++程序,用于寻找所有符合条件的七位全数字质数:

#include <iostream>
#include <vector>
#include <cmath>

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;
}

void permute(std::vector<int>& digits, int index) {
    if (index == 7) {
        int num = 0;
        for (int i = 0; i < 7; ++i) {
            num = num * 10 + digits[i];
        }
        if (isPrime(num)) {
            std::cout << num << " ";
        }
        return;
    }
    for (int i = index; i < 7; ++i) {
        std::swap(digits[i], digits[index]);
        permute(digits, index + 1);
        std::swap(digits[i], digits[index]);
    }
}

int main() {
    std::vector<int> digits = {1, 2, 3, 4, 5, 6, 7};
    permute(digits, 0);
    std::cout << std::endl;
    return 0;
}

这个程序首先定义了一个isPrime函数来判断一个数是否为质数,然后使用回溯法生成所有可能的全数字排列,并检查它们是否为质数。最终,程序会输出所有符合条件的七位全数字质数。

请注意,找到所有符合条件的全数字质数可能需要一些时间,因为这个程序会生成并检查大量的数字。在运行程序时,请耐心等待直到程序完成输出。

© 版权声明
THE END
喜欢就支持一下吧
点赞12赞赏 分享