#include<iostream>
#include<cmath>
using namespace std;
//判断n是否为素数
bool isPrime(int n)
{
if (n <= 1)return false;
int sqr = (int)sqrt(1.0*n);
for (int i = 2; i <= sqr; i++)
if (n%i == 0)return false;
return true;
}
int prime[100], pNum = 0;
bool p[101] = { 0 };
//求小于等于n的素数表
void Find_Prime(int n)
{
for (int i = 1; i < n + 1; i++)
{
if (isPrime(i) == true)
{
prime[pNum++] = i;
p[i] = true;
}
}
}
int main(void)
{
int n;
cin >> n;
Find_Prime(n);
for (int i = 0; i < pNum; i++)
cout << prime[i] << ' ';
system("pause");
return 0;
}
这种暴力法,枚举部分复杂度是O(n),判断素数部分是O(根号下n),所以总的复杂度是O(n*根号下n)。
n不能超过1E5的大小,有不少局限性,但是一般情况下算法题用足以。