วันพฤหัสบดีที่ 10 พฤศจิกายน พ.ศ. 2559

C++ หาจำนวนเฉพาะตัวที่ค่ามากที่สุดที่น้อยกว่า 100'000'000


void run(int upperBound)
{
int upperBoundSqureRoot = (int)sqrt((double)upperBound);
bool *isComposite = new bool[upperBound + 1];
memset(isComposite, 0, sizeof(bool)*(upperBound + 1));
for (int m = 2; m <= upperBoundSqureRoot; m++)
{
if (!isComposite[m])
{
cout << m << "\t";
for (int k = m*m; k <= upperBound; k += m)
{
isComposite[k] = true;
}
}
}
for (int m = upperBoundSqureRoot; m <= upperBound; m++)
{
if (!isComposite[m])
{
cout << m << "\t";
}
}
delete[] isComposite;
}
int main()
{
system("cls");
run(100'000'000);
         return 0;
}


ไม่มีความคิดเห็น:

แสดงความคิดเห็น