小编vin*_*nny的帖子

C++ 优化该算法

观看了陶哲轩的一些视频后,我想尝试在 C++ 代码中实现算法来查找 n 以内的所有素数。在我的第一个版本中,我只是测试了从 2 到 n 的每个整数,看看它们是否可以被 2 到 sqrt(n) 之间的任何整数整除,我让程序在大约 52 秒内找到 1-10,000,000 之间的素数。

在尝试优化程序并实现我现在所知的埃拉托斯特尼筛法时,我认为任务的完成速度会比 51 秒快得多,但遗憾的是,事实并非如此。即使达到 1,000,000 也需要相当长的时间(不过没有计时)

#include <iostream>
#include <vector>
using namespace std;

void main()
{
    vector<int> tosieve = {};        
    for (int i = 2; i < 1000001; i++) 
    {                                       
        tosieve.push_back(i);               
    }                                       
        for (int j = 0; j < tosieve.size(); j++)
        {
            for (int k = j + 1; k < tosieve.size(); k++)
            {
                if (tosieve[k] % tosieve[j] == 0)
                {
                    tosieve.erase(tosieve.begin() + k); …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm math optimization

3
推荐指数
1
解决办法
190
查看次数

标签 统计

algorithm ×1

c++ ×1

math ×1

optimization ×1