在标记为重复之前阅读以下内容:
我不想知道别人怎么做或者什么更快,我想自己做。
问题:
我在计算的素数和真实的素数之间有一点差异(大约 1%)。我找不到错误在哪里......
例如 :
从 2 到 50 000 :
Wolfram|Alpha返回 5 132 而我的算法返回 5 182
从 2 到 500 000 :
Wolfram|Alpha返回 41 537,我的算法返回 41 665
我认为我错了,Wolfram|Alpha 是对的,所以这是我的代码:
#include <QCoreApplication>
#include <QVector>
#include <QDebug>
QVector<int> tabPrime;
bool isPrime(int n)
{
bool boolIsPrime = true;
int i = 0;
while (boolIsPrime && tabPrime.at(i) * tabPrime.at(i) < n)
{
if (n % tabPrime.at(i) == 0)
boolIsPrime = false;
i++;
}
if(boolIsPrime)
tabPrime.append(n);
return boolIsPrime;
}
int main()
{
int numberWanted = 500000;
tabPrime.append(2);
tabPrime.append(3);
for(int i = 4; i < numberWanted; i++)
isPrime(i);
qDebug() << "There is" << tabPrime.count() << "primes numbers from 2 to" << numberWanted;
return 0;
}