#include#include using namespace std; // 题目:统计n以内的素数个数 // 输入:100 // 输:25 // 解法:埃筛法 int countPrime(int n){ vector isPrime(n,0); int count = 0; for(int i = 2; i < n; i++){ if(!isPrime[i]){ count++; for(int j = i*i; j <= n; j+=i){ isPrime[j] = true; } } } return count; } int main(){ int n; cout<<"please input an integer n:"; cin>>n; cout< 总结
- 该方法思想类似于打表,提前记录好非素数的数,从而加快速度,用空间换时间。
- 在打表的时候,仔细发现一个规律就是下面j这里可以从ii开始而并非是2i开始的,这相当于“剪枝”,已经计算过的就不再进行计算。



