当前位置: 首页 > article >正文

普通算法——埃氏筛

埃氏筛

用于更加快速的求素数

思路:

  • 创建一个同等大小的bool数组
  • 先判断i有没有被筛掉
  • 若没有,则以i基数依次筛掉含有该因数i的数,即st[j] = true;
#include <iostream>
#include <ctime>
using namespace std;

const int N = 1e7;

bool st[N] = { false };

int main()
{
	double e = clock();
	int count = 0;
	int pp = 0;
	//埃氏筛法:50ms
	for (int i = 2; i <= N / i; i++) {
		if (!st[i]) {
			for (int j = i * i; j < N; j += i) st[j] = true;
		}
	}
	for (int i = 2; i < N; i++)
	if (!st[i]) count++;
	//普通筛法:806ms
	/*for (int i = 2; i < N; i++) {
		if (is_Prime(i)) count++;
	}*/
	//欧拉筛法:43ms
	/*int primes[N];
	for (int i = 2; i <= N; i++) {
		if (!st[i]) primes[pp++] = i, count++;
		for (int j = 0; i * primes[j] <= N; j++) {
			st[primes[j] * i] = true;
			if (i % primes[j] == 0) break;
		}
	}*/
	double s = clock();
	cout << count << endl << s - e;
}

http://www.kler.cn/a/429867.html

相关文章:

  • SpringCloud系列教程:微服务的未来(十二)OpenFeign连接池、最佳实践、日志、微服务拆分
  • 《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统
  • 通过ESP32和INMP441麦克风模块实现音频数据传递
  • 基于单片机的汽车雨刷器装置
  • 酷柚易汛生产管理系统PHP+Uniapp
  • Excel VBA学习系列汇总20241205
  • 使用paho.mqtt.cpp库实现ssl/tls加密通信
  • NanoLog起步笔记-6-StaticLogInfo
  • 攻防世界 - Web - Level 1 | file_include
  • springboot的restTemplate发起get请求参数到服务端无法被解析,curl或postman可以正常调用的url。
  • 【JavaWeb后端学习笔记】Spring事务管理
  • ISO45001职业健康安全管理体系涵盖了丰富的内容
  • 【计网笔记】习题
  • 调度系统:使用 Apache Airflow 管理和调度 Couchbase SQL 脚本的实际例子
  • C++ 游戏开发与小程序:跨平台开发与智能化游戏体验的结合
  • SpringBoot | 拦截器 | 统一数据返回格式 | 统一异常处理 | 适配器模式
  • 链式设计模式:装饰模式,职责链模式
  • 一根网线如何用软路由给手机、电脑分配设置不同IP
  • 从watch、watchEffect、useEffect原理到vue、react响应原理
  • keepalived 各模式设置
  • 实时数据开发|Flink状态计算 有状态VS无状态,区别和优劣
  • NanoLog起步笔记-7-log解压过程初探
  • 什么是反向代理?作用、原理和实例详解