越烽建设集团有限公司网站南通网站建设搭建
2026/3/27 4:56:58 网站建设 项目流程
越烽建设集团有限公司网站,南通网站建设搭建,网站开发流程6个阶段,做网站后台的时候误删了数据库的表对于正常的程序要求#xff0c;埃氏筛的速度已经是相当不错了#xff0c;但是在某些极端条件下#xff0c;埃氏筛的速度可能还不够#xff0c;这个时候我们就要用到欧拉筛了思路埃氏筛存在一个非常严重的缺陷#xff0c;那就是它会对一个数据进行反复筛选#xff0c;比如…对于正常的程序要求埃氏筛的速度已经是相当不错了但是在某些极端条件下埃氏筛的速度可能还不够这个时候我们就要用到欧拉筛了思路埃氏筛存在一个非常严重的缺陷那就是它会对一个数据进行反复筛选比如6 2 * 36 3 * 2可以发现对于 6 这个非质数我们进行了两次筛选而对于后面跟大的数来说可能被筛的次数会更多这个时候就会对我们筛法的效率产生影响。而欧拉筛法可以避免无效的筛选。我们发现对于每个非质数都会存在唯一的最小质因子。于是我们便可以让每个和数只在它最小质因子与对应因数相乘时才被标记为合数这样我们就只筛了一次。例如6 2 * 3 //标记 66 3 * 2 //已经标记过便不再标记核心思想从第一个质数开始一个个排除不做无效的筛选。人话从前向后走边走边乘乘出来的数就是合数代码实现#includeiostream #includecstring using namespace std; const int N 1e5; int primes[N]; //存储质数 int flag[N]; //标记是质数还是合数如果是质数为 0 ,开始假设全是质数 int main(){ int n; cin n; int pos 0; for(int i 2 ; i n ; i){ if(flag[i] 0){ //如果是质数 primes[pos] i; //存储质数 for(int j 0 ; j pos i * primes[j] n ; j){ flag[primes[j] * i] 1;//标记为合数 } }else{ //如果是合数 for(int j 0 ; j pos primes[j] * i n ; j){ flag[primes[j] * i] 1;//标记为合数 if(i % primes[j] 0) break; //如果可以整除说明发现了最小质因子退出循环 } } } for(int i 0 ; i pos ; i){ cout primes[i] ; } cout endl; return 0; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询