算法笔记__打印素数表(暴力法)

#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的大小,有不少局限性,但是一般情况下算法题用足以。

猜你喜欢

转载自blog.csdn.net/qq_41938259/article/details/86321379