首页 > 其他分享 >基础数学知识

基础数学知识

时间:2024-04-04 23:55:24浏览次数:23  
标签:prime 标记 int 合数 基础 素数 数学知识 欧拉

果然还是又一出写一出的比较适合我,按计划写博客没有一点点动力

素数筛

虽然筛法很多,但我觉得也没必要把那么多些都写这儿,毕竟到时候用也只会用最好的那种
所以这里就只写线性筛法:欧拉筛
欧拉筛和埃氏筛有点相似,都是用比较小的素数来标记合数,但不同的是埃氏筛中一个合数可能被多个素数访问,比如12就可能被2和4都访问到,欧拉筛则避免了这种情况。欧拉筛的精髓在于他只让某个合数的最小质因数访问它并标记。比如12就只能被2* 6标记。那么是怎么做到的呢?
首先是比较常规的is_prime数组标记和存答案的prime数组以及存答案个数的cnt
首先将1标记为非素数,然后外层i从2到n循环,若is_prime[i]未被标记则加入答案数组。然后内层从1到cnt循环j,让i与已得到的质数一一相乘。在遍历的过程中如果i能被prime[j]整除则在标记后跳出循环。
原因:如果i能整除以prime[j],说明i的倍数也一定是prime[j]的倍数。我们之前说过,某个合数只会被它的最小质因子标记,那么显然不可能是被i标记。所以为了避免重复标记,直接跳出循环
以下为输出n以内第k大素数的代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8+5;
bool is_prime[maxn];
int prime[maxn];
int n,q,cnt=0;
void pre()
{
	is_prime[1]=true;
	for(int i=2;i<=n;i++)
	{
		if(!is_prime[i]) prime[++cnt]=i;
		for(int j=1;j<=cnt;j++)
		{
			if(i*prime[j]>n) break;
			is_prime[i*prime[j]]=1;
			if(i%prime[j]==0) break;
		}
	}
}
int main()
{
	scanf("%d%d",&n,&q);
	pre();
	for(int i=1;i<=q;i++)
	{
		int x;
		scanf("%d",&x);
		printf("%d\n",prime[x]);
	}
	return 0;
}

标签:prime,标记,int,合数,基础,素数,数学知识,欧拉
From: https://www.cnblogs.com/miku-dayo/p/18115347

相关文章

  • 数学知识--(质数,约数)
    本文用于个人算法竞赛学习,仅供参考目录一.质数的判定二.分解质因数三.质数筛1.朴素筛法 2.埃氏筛法3.线性筛法 四.约数1.求一个数的所有约数2.约数个数和约数之和3.欧几里得算法(辗转相除法)--求最大公约数一.质数的判定质数:质数是指在大于1的自然数中,除了1......
  • Kubernetes的基础概念
    目录一、概述二、为什么要用Kubernetes2.1从技术层面分析2.1.1问题解答2.1.2Docker等“裸容器”的不足2.1.2.1宕机无法自动恢复2.1.2.2健康检查不到位2.1.2.3部署、回滚、扩容问题2.1.2.4运维难2.1.3总结2.2从开发人员层面分析2.2.1分析日志2.2.1.1......
  • JVM基础二——类的生命周期
     加载阶段:   连接阶段:  初始化阶段:   总结:  ......
  • CSS基础:语法、注释以及注释的3个注意事项
    你好,我是云桃桃。一个希望帮助更多朋友快速入门WEB前端的程序媛。1枚程序媛,大专生,2年时间从1800到月入过万,工作5年买房。分享成长心得。259篇原创内容-公众号后台回复“前端工具”可获取开发工具,持续更新中后台回复“前端基础题”可得到前端基础100题汇总,持续更新中今......
  • Minio基础
    MinIO是一个高性能的对象存储服务器,用于构建云存储解决方案。它使用Golang编写,专为私有云、公有云和混合云环境设计。它是兼容AmazonS3API的,并可以作为一个独立的存储后端或与其他流行的开源解决方案(如Kubernetes)集成。1.部署方式Minio提供了两种部署方式:单机部署和分布式,两......
  • 第6天:基础入门-抓包技术&HTTPS协议&APP&小程序&PC应用&WEB&转发联动
    第六天一、抓包技术-HTTP/S-Web&APP&小程序&PC应用想要抓包都必须要配置代理和端口,这些工具只能抓取HTTP/S协议的数据,走其他协议的数据抓不了有些APP具有代理检测功能,若发现你开启了代理,直接无法访问APP1.Web网页:安装完抓包软件之后,需要在软件上导出CA证书,在浏览器上......
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch
    00-开始前端基础知识HTMLCSSJSHTTP等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。为何要考察扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘......
  • 【Linux】网络基础常识
    文章目录1.网络常识1.0dhcp协议1.1ip地址,mac地址是什么?1.2你拿着手机是如何连接上wifi的?1.3数据,流量是什么?手机如何通过“数据/流量”上网?1.4电脑连接wifi的原理?电脑通过热点上网的原理?1.5固定电话打电话的原理?智能手机打手机电话/语音电话/视频电话的原理?1.62g,5g有什......
  • Python企业面试题1 —— 基础篇
    1.b、B、KB、MB、GB的关系?b----位(bit)B----字节(一个字节等于8位)1B=8bit1KB=1024B1MB=1024KB1GB=1024MB2.PE8规范1.使用4个空格而不是tab键进行缩进。2.每行长度不能超过79。3.使用空行来间隔函数和类。4.必要时候,在每一行下写注释。5.......
  • 前端学习<四>JavaScript基础——03-常量和变量
    常量(字面量):数字和字符串常量也称之为“字面量”,是固定值,不可改变。看见什么,它就是什么。常量有下面这几种:数字常量(数值常量)字符串常量布尔常量自定义常量数字常量数字常量非常简单,直接写数字就行,不需要任何其他的符号。既可以是整数,也可以是浮点数。例如: //不......