美文网首页
C++ 求质数

C++ 求质数

作者: 奇点创客 | 来源:发表于2021-08-29 10:44 被阅读0次

生成前 n 个素数,n 由用户提供,并保存到文件

#include <iostream>
#include <ranges>
#include <cmath>
#include <cstdlib>
#include <fstream>
#include <chrono>

class ElapesdTime {
public:
    ElapesdTime() {
        start_ = std::chrono::steady_clock::now();
    }
    ~ElapesdTime() {
        auto end_ = std::chrono::steady_clock::now();
        auto elapsed_time = std::chrono::duration<double>(end_ - start_);
        std::cout << "Elapsed time: " << elapsed_time.count() << " s\n";
    }
private:
    std::chrono::steady_clock::time_point start_;
};

bool is_prime(uint64_t n)
{
    if (n == 0 or n == 1) return false;
    if (n == 2 or n == 3) return true;
    if (n % 6 != 1 and n % 6 != 5) return false;

    auto n_sqrt = static_cast<uint64_t>(std::sqrt(n));
    for (uint64_t i = 5; i <= n_sqrt; i += 6) {
        if (n % i == 0 or n % (i + 2) == 0)
            return false;
    }
    return true;
}
int main(int argc, char* argv[])
{
    ElapesdTime et;
    uint64_t prime_amount{ 100'0000ull };  // 欲获取的质数个数
    if (argc == 2) prime_amount = std::atoi(argv[1]);

    auto primes_view = [](uint64_t n) {
        using namespace std::views;
        return iota(2) | filter(is_prime) | take(n);
    };

    std::ofstream fout{ "primers.txt" };
    for (auto prime : primes_view(prime_amount)) 
        fout << prime << '\n';

    std::cout << "Finish! " << std::endl;
}

相关文章

  • C++ 求质数

    生成前 n 个素数,n 由用户提供,并保存到文件

  • 求质数

    public class zhishutest { public static void main(String[...

  • 求质数

    想到当初实习和转正的面试中都遇到了算质数这道题,又都没有很好的写出来,就很懊恼,所以想当个好的程序媛,先从这个问题...

  • 求质数,python

    质数又称为素数,是一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。 求n之内...

  • 求质数因子

    题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(如180的质因子为2 2 3 3 5 )最后一...

  • JS求质数

  • 极少数人用过的另类素数求解法,C语言经典算法之筛选法求质数

    筛选求质数 明除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的求出质数则一直是程式设计...

  • 第二夜——质数

    大家好,我是平头哥,今天给大家分享的内容为如何求质数。 什么是质数 百度百科上说质数(prime number)又...

  • Sum All Primes

    求小于等于给定数值的质数之和。 只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 ...

  • Freecodecamp中级算法

    求小于等于给定数值的质数之和。 只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 ...

网友评论

      本文标题:C++ 求质数

      本文链接:https://www.haomeiwen.com/subject/ajuwiltx.html