这个问题已经在这里有了答案:




9年前关闭。






有什么办法可以使它更加优化。

#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/

10-16 04:40