刷题日记——非素数个数(厦大机试)

news2024/11/17 12:55:19

题目

在这里插入图片描述

分析

  • 使用欧拉筛法计算从1到b的素数个数,方法如下:
            找到一个素数后,就将它的倍数标记为合数,也就是把它的倍数“筛掉”;如果一个数没有被比它小的素数“筛掉”,那它就是素数。
  • 计算出从1到b的素数过后,会留下一个装满从1到b内所有素数的数组,该数组大小即为从1到b的素数个数 c o u n t b count_b countb,我们遍历数组,对小于a的素数个数进行计数,计数值即为1到a的素数个数 c o u n t a count_a counta
  • 那么从a到b的素数个数为: c o u n t b − c o u n t a count_b-count_a countbcounta
  • 从a到b的非素数个数为: b − a + 1 + c o u n t b − c o u n t a b-a+1+count_b-count_a ba+1+countbcounta(注意a≠1时成立)
  • 注意,题目要求1也算作素数,那么在a=1时,从a到b的非素数个数为: b − a + c o u n t b − c o u n t a b-a+count_b-count_a ba+countbcounta

代码

#include <cstdio>
#include <map>
#include <string>
#include <string.h>
#include <cmath>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <limits.h>
using namespace std;
bool is_su[10000001];
int su[10000001];

int num_of_su(int n){
  int counts = 0;
  for(int i=2;i<=n;i++){
    if(is_su[i]){
      su[++counts] = i;
    }
    for(int j=1;j<=counts&&i*su[j]<=n;j++){
      is_su[i*su[j]] = false;
      if(i%su[j]==0){
        break;
      }
    }
  }
  return counts;
}

int main(){
  int a,b;
  while(scanf("%d%d",&a,&b)!=EOF){
    int counts_a = 0;
    int counts_b = 0;
    memset(is_su, true, b+1);
    is_su[1]=false;
    counts_b = num_of_su(b);
    for(int i=1;su[i]<a;i++){
      counts_a++;
    }
    int result = b-a-counts_b+counts_a+1;
    if(a==1){
      result--;
    }
    printf("%d\n",result);
  }

	return 0;
}

到此结束,更多关于欧拉筛法的信息,请看下面的链接,当然还有其他的筛法我没有做。

【算法/数论】欧拉筛法详解:过程详述、正确性证明、复杂度证明
【【C++算法】20分钟学会高效地素数筛法,埃氏筛法,欧拉筛法】
一次找出范围内的所有素数,埃式筛法是什么神仙算法?

xmu机试题刷题结束

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu Desktop - gnome-calculator (计算器)

Ubuntu Desktop - gnome-calculator [计算器] 1. Ubuntu Software -> gnome-calculator -> Install -> Continue2. Search your computer -> Calculator -> Lock to LauncherReferences 1. Ubuntu Software -> gnome-calculator -> Install -> Continu…

mysql颗粒归仓

B B树&#xff1a;节点排序 一个节点存多个元素 多个元素也排序了 叶子节点间有指针&#xff0c;非叶子节点上的元素在叶子节点冗余&#xff1a;叶子节点存储排好序的all元素 通过数据排序提高查询速度&#xff0c;节点存储多个元素 高度不会太高&#xff0c;一个innodb页B树…

如何批量获取公众号所有文章的阅读数点赞数和留言数导出excel?

如何批量获取公众号所有文章的阅读数点赞数和留言数导出excel&#xff1f;我写了个脚本批量抓取&#xff0c;导出的excel文章数据包含文章日期&#xff0c;文章标题&#xff0c;文章链接&#xff0c;文章简介&#xff0c;文章作者&#xff0c;文章封面图&#xff0c;是否原创&a…

由浅到深认识C语言(5):函数

该文章Github地址&#xff1a;https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.csdn…

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下 1. ForeverStrongCheng/OpenCV-tutorials2. Fork -> ForeverStrongCheng/R2CNN_Faster-RCNN_TensorflowReferences 访问仓库页面&#xff0c;点击 Fork 按钮创建自己的仓库。 Fork 是将 GitHub 的某个特定仓库复制到自己…

python二级备考(3)-综合应用

1 《命运》是著名科幻作家倪匡的作品。这里给出《命运》的一个网络版本文件&#xff0c;文件名为“命运. txt”。 问题1 (5分) :在PY301-1. py文件中修改代码&#xff0c;对“命运. txt”文件进行字符频次统计&#xff0c;输出频次最高的中文字符(不包含标点符号)及其频次&…

图像去噪--(1)

系列文章目录 文章目录 系列文章目录前言一、图像噪声1.1 噪声定义1.2 基本特征 二、按照噪声概率分布分类1.高斯噪声2.泊松噪声 三、去噪算法3.1 线性滤波3.1.1 高斯滤波3.1.2 均值滤波 3.2 非线性滤波3.2.1 中值滤波3.2.2 双边滤波 四、深度学习总结 前言 一、图像噪声 1.1 …

【模糊集合】示例

【模糊集合】隶属函数、关系与运算 例1 设&#xff0c; 分别进行交、并、补运算&#xff0c;有&#xff1a; 由上模糊集合的全体组成的集合称为的模糊幂集&#xff0c;记为&#xff0c;fuzzy 上述为模糊集合的Zadeh记法&#xff0c;其中的“”号不表示分式求和&#xff0c;仅作…

深度强化学习(七)策略梯度

深度强化学习(七)策略梯度 策略学习的目的是通过求解一个优化问题&#xff0c;学出最优策略函数或它的近似函数&#xff08;比如策略网络&#xff09; 一.策略网络 假设动作空间是离散的,&#xff0c;比如 A { 左 , 右 , 上 } \cal A\{左,右,上\} A{左,右,上}&#xff0c;策…

Linux 进程控制进程终止

目录 一、fork函数 1、概念 2、父子进程的共享 3、 为什么父子进程会从fork()调用之后的位置继续执行代码 4、写时拷贝 5、为什么需要写时拷贝 6、写时拷贝的好处 7、fork常规用法 8、fork调用失败的原因 9、查看系统最大进程数 二、进程终止 1、进程退出场景 2、…

redis 入门01

1.安装与配置 在官网下压缩包并传送给自己的虚拟机或者使用wget直接下载都可以 注意:redis是运行在linux下的基于内存的kv键值对数据库 安装与配置参考 2.经典Hello World 注意设置redis在后台运行,默认是前台进行的 我们配置完成之后首先启动服务器 redis-server 配置文件 这里…

MyBatis3源码深度解析(十二)MyBatis的核心组件(一)Configuration

文章目录 第四章 MyBatis的核心组件4.1 使用MyBatis操作数据库4.2 MyBatis核心组件4.3 Configuration组件4.3.1 属性4.3.2 设置4.3.3 类型别名4.3.3 类型处理器4.3.5 对象工厂4.3.6 插件4.3.7 配置环境4.3.8 映射器 第四章 MyBatis的核心组件 4.1 使用MyBatis操作数据库 在研…

Boyer Moore 算法介绍

1. Boyer Moore 算法介绍 Boyer Moore 算法&#xff1a;简称为 BM 算法&#xff0c;是由它的两位发明者 Robert S. Boyer 和 J Strother Moore 的名字来命名的。BM 算法是他们在 1977 年提出的高效字符串搜索算法。在实际应用中&#xff0c;比 KMP 算法要快 3~5 倍。 BM 算法思…

【Machine Learning】Suitable Learning Rate in Machine Learning

一、The cases of different learning rates: In the gradient descent algorithm model: is the learning rate of the demand, how to determine the learning rate, and what impact does it have if it is too large or too small? We will analyze it through the follow…

【安全类书籍-1】asp代码审计.pdf

目录 内容简介 作用 下载地址 内容简介 这个文档摘录片段主要讨论了ASP编程中的安全性审计,包括SQL注入漏洞、Cookie注入防范措施及文件上传安全问题,并给出了相关示例代码。 SQL注入漏洞与防范 - ASP代码中展示了如何通过`Request.QueryString`和`Request.Form`获取用户…

SpringBoot打造企业级进销存储系统 第五讲

package com.java1234.repository;import com.java1234.entity.Menu; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query;import java.util.List;/*** 菜单Repository接口*/ public interface MenuReposit…

spacy进行简单的自然语言处理的学习

自然语言处理基本概念 概念&#xff1a;自然语言处理&#xff0c;是让机器理解人的语言的过程。 作用&#xff1a;通过使用自然语言处理&#xff0c;机器可以理解人的语言&#xff0c;从而进行语义分析&#xff0c;例如&#xff1a;从一句话中判断喜怒哀乐&#xff1b;从一段文…

电大搜题:开启学习新时代

身处信息化时代&#xff0c;学习的方式已经发生了巨大的变革。在这个多元化的学习环境中&#xff0c;传统的学习模式已经无法满足现代学习者的需求。然而&#xff0c;电大搜题应运而生&#xff0c;为学习者提供了一个高效、便捷的学习途径。 电大搜题&#xff0c;作为黑龙江开…

阅读 - 二维码扫码登录原理

在日常生活中&#xff0c;二维码出现在很多场景&#xff0c;比如超市支付、系统登录、应用下载等等。了解二维码的原理&#xff0c;可以为技术人员在技术选型时提供新的思路。对于非技术人员呢&#xff0c;除了解惑&#xff0c;还可以引导他更好地辨别生活中遇到的各种二维码&a…

铁路订票平台小程序|基于微信小程序的铁路订票平台小程序设计与实现(源码+数据库+文档)

铁路订票平台小程序目录 目录 基于微信小程序的铁路订票平台小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、车次信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐…