这个问题已经在这里有了答案:
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/