c++ - 打印小于 100 的质数

标签 c++

<分区>

Possible Duplicate:
Which is the fastest algorithm to find prime numbers?

有什么办法可以让这个更优化..

#include <vector>
    int main()
    {
        std::vector<int> primes;
        primes.push_back(2);
        for(int i=3; i < 100; i++)
        {
            bool prime=true;
            for(int j=0;j<primes.size() && primes[j]*primes[j] <= i;j++)
            {
                if(i % primes[j] == 0)
                {
                    prime=false;
                    break;
                }
            }
            if(prime) 
            {
                primes.push_back(i);
                cout << i << " ";
            }
        }

        return 0;
    }

最佳答案

int main(int argc, char *argv[]) {
    cout << "2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ";
}

:-)

更重要的是,您可以通过缓存 primes[j] * primes[j] 并节省乘法运算来避免重复对素数求平方。

关于c++ - 打印小于 100 的质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985208/

相关文章:

c++ - GLUPerspective 的原始 OpenGL 等价物?

c++ - 在 PostgreSQL 函数或过程中使用 C++ 代码

c++ - 你如何在Qt中删除字符串(qstring)中的子字符串

c++ - 在类似地震的控制台中自动取消注册命令的正确方法是什么?

c++ - setter/getter 的最佳实践

c++ - C++中的矩阵库

c++ - 如何将目录中具有完整路径的所有文件传递给 execv 中的参数数组?

iphone - 我可以在 iCloud 中存储 C++ 二进制文件吗?

c++ - 使用区域设置在字符串中查找子字符串

c++ - 促进 Hana 概念实现