题目
给定一个正整数 $n$,请你求出 $1∼n$ 中质数的个数。
输入格式
共一行,包含整数 $n$。
输出格式
共一行,包含一个整数,表示 $1∼n$ 中质数的个数。
数据范围
$1≤n≤10^6$
输入样例:
8
输出样例:
4
思路
朴素筛选
遍历到某个数值 $i$ 我们将它的倍数全部删除,如此反复,剩下的为 $1∼n$ 中的所有质数
代码
朴素筛选法
#include <
对象的初始化和清理是两个非常重要的安全问题:一个对象或者变量没有初始状态,对其使用后果是未知的。同样的使用完一个对象或者变量,没有及时清理,也会造成一定的安全问题。c++利用构造函数和析构函数解决上述问题。构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作。构造函数语法: 类名(){}1.构造
queue 队列1、特性在一端插入元素,在一端取出元素,具有先进先出的特点,插入和删除都较快。2、适用情况需要一个先进先出结构时使用。3、头文件#include<queue>4、复杂度插入:push(),O(1)
删除:pop(),O(1)
查找(队列头):front(),O(1)5、定义及常用函数//默认为用deque容器实现的queue;
queue<int>q1;
q
priority queue 优先队列1、特性每个元素都有一个优先级,元素按优先级的顺序从队列中删除,如果优先级相同,则遵循先进先出规则。插入和删除都比一般的队列慢,因为必须对元素重新调整顺序,以支持按优先级排序。2、适用情况需要一个带优先级的先进先出结构3、头文件#include<queue>4、复杂度插入:push(),O(logN)
删除:pop(),O(logN)
查找(取堆顶
使用数组,使用每个元素的下标定位元素,逐个替换实现int main() {
char arr1[] = "XXX!Welcome To China!XXX";
char arr2[] = " ";
int left = 0;
int right = strlen(arr1) - 1;
while (left<=right) {
函数是任何一门高级语言中必须要存在的,使用函数式编程可以让程序可读性更高,充分发挥了模块化设计思想的精髓,今天我将带大家一起来探索函数的实现机理,探索编译器到底是如何对函数这个关键字进行实现的,并使用汇编语言模拟实现函数编程中的参数传递调用规范等。
说到函数我们必须要提起调用约定这个名词,而调用约定离不开栈的支持,栈在内存中是一块特殊的存储空间,遵循先进后出原则,使用push与pop指令对栈空间执
算术运算指令集是计算机中的一组基本操作,用于对数字执行常见的算术运算操作。这些指令都是计算机中非常基础的运算指令,可以用于实现所有常见的算术运算操作,并可以通过组合使用实现更加复杂的数学运算。在实际编程中,程序员可以根据具体需求选择合适的运算指令,实现程序中的算术运算操作。
4.1 MOV/INC/DEC/XCHG
MOV/INC/DEC 指令是汇编语言中的三种基本指令,用于在寄存器和内存中进行数
本章将深入研究字符串操作指令,这些指令在汇编语言中具有重要作用,用于处理字符串数据。我们将重点介绍几个关键的字符串操作指令,并详细解释它们的功能和用法。通过清晰的操作示例和代码解析,读者将了解如何使用这些指令进行字符串比较、复制、填充等常见操作。我们还将探讨不同指令之间的区别,并提供实际的示例程序,展示字符串操作指令在实际场景中的应用。通过学习本章,读者将能够拓展汇编技能,为处理字符串数据提供高效
汇编语言是一种面向机器的低级语言,用于编写计算机程序。汇编语言与计算机机器语言非常接近,汇编语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被汇编器编译成计算机可执行的机器码。
标志位测试指令是汇编语言中用于测试处理器标志位状态的指令。标志位是位于处理器状态寄存器中的一组特殊标志,用于指示上一个运算的结果是否为零、是否进位/借位、是否溢出等等。可以使用标志位测试指令来检查标志位的状
汇编语言是一种面向机器的低级语言,用于编写计算机程序。汇编语言与计算机机器语言非常接近,汇编语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被汇编器编译成计算机可执行的机器码。
相较于高级语言(如C、Python等),汇编语言学习和使用难度相对较大,需要对计算机内部结构、指令集等有深入的了解,以及具有良好的编程习惯和调试能力。但对于需要对计算机底层进行操作的任务,汇编语言是极其高效
命令行解析库是一种用于简化处理命令行参数的工具,它可以帮助开发者更方便地解析命令行参数并提供适当的帮助信息。C++语言中,常用的命令行解析库有许多,通过本文的学习,读者可以了解不同的命令行解析库和它们在C++项目中的应用,从而更加灵活和高效地处理命令行参数。
一般比较常见的解析库:
getopt:一个C语言的命令行解析库,也被广泛用于C++程序。它提供了一组函数来解析命令行参数,并支持短选项(如
property_tree 是 Boost 库中的一个头文件库,用于处理和解析基于 XML、Json 或者 INFO 格式的数据。 property_tree 可以提供一个轻量级的、灵活的、基于二叉数的通用容器,可以处理包括简单值(如 int、float)和复杂数据结构(如结构体和嵌套容器)在内的各种数据类型。它可以解析数据文件到内存中,然后通过迭代器访问它们。
在 Boost 库中,proper
@TOC前言本系列基于stm32系列单片机来使用freerotsFreeRTOS是一个流行的实时操作系统,提供了许多功能强大的特性,其中包括信号量。信号量是一种在并发编程中常用的同步机制,用于实现资源的共享和互斥访问。本文将介绍FreeRTOS中的信号量,包括其基本概念、用法和示例。一、Freertos的信号量是什么?当我们在编写多任务并发程序时,经常会遇到需要多个任务共享资源的情况,比如共享一个
《Programming Abstractions In C》学习第50天,p123-p126,总结如下:一、技术总结1.notaion这也是一个在计算机相关书籍中出现的词,但有时却不是那么好理解,因为它可以指代很多对象,这里做一个记录。示例:p124。In C, you can use any character array to hold string data.char str[6] = {
题目
给定 $n$ 个正整数 $a_i$,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。
输入格式
第一行包含整数 $n$。
接下来 $n$ 行,每行包含一个正整数 $a_i$。
输出格式
对于每个正整数 $a_i$,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。
每个正整数的质因数全部输出完毕后,输出一个空行。
数据范围
$1≤
实用工具类
// 实用工具类的实现
// 避免头文件重复包含
#ifndef __M_UTIL_H__
#define __M_UTIL_H__
#include <iostream>
#include <unistd.h>
#include <ctime>
#include <sys/types.h>
#include <sys/stat.h
stack 栈1、特性在一端插入元素,在同一端删除元素,具有先进后出的特性。
底层实现一般用 list 或 deque,封闭头部即可,数据先进后出,不支持随机访问。2、适用情况需要一个先进后出结构时3、头文件#include<stack>4、复杂度插入:push(),O(1)
删除:pop(),O(1)
查找(栈顶):top(),O(1)5、定义及常用函数//默认构造函数
sta
1、二分查找的基本思想是,要查找的值和整个数组序列的中间值做比较,确认该值在其中一半里,只要在数组序列一半中继续搜索。2、采用二分查找方法的前提条件是数组或线性表中元素必须按照大小有序排列。代码如下,int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int k = 7;
int sz = sizeof(arr) / siz
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量和性能,并且可以适用于多种不同的系统平台和编译器。Boost库已被广泛应用于许多不同领域的C++应用程序
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量和性能,并且可以适用于多种不同的系统平台和编译器。Boost库已被广泛应用于许多不同领域的C++应用程序
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量和性能,并且可以适用于多种不同的系统平台和编译器。Boost库已被广泛应用于许多不同领域的C++应用程序
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量和性能,并且可以适用于多种不同的系统平台和编译器。Boost库已被广泛应用于许多不同领域的C++应用程序
@TOC前言C++STL(Standard Template Library)是C++标准库中的一部分,提供了一组通用的模板容器和算法,以及一些有用的功能。其中,vector是STL中最重要且常用的容器之一。它类似于数组,但提供了更多的功能和灵活性。本文将详细介绍vector的基本使用方法,帮助读者快速入门。一、头文件当我们使用vector向量的时候,需要加上:#include <vecto
# VS Code找不到任务C/C++生成活动文件的解决方案
在使用VS Code进行C/C++开发时,有时候会遇到找不到任务C/C++生成活动文件的问题。这个问题可能是由于配置错误或者缺少必要的插件所导致的。本文将介绍如何解决这个问题,并提供相关的代码示例。
## 问题描述
当我们在VS Code中使用C/C++开发插件时,有时候会遇到以下错误提示:
```
No task to sho
# C/C++ ucrtbase.dll 0xc0000409 错误解析及解决方法
## 引言
在C/C++编程过程中,出现错误是常见的情况。其中,ucrtbase.dll 0xc0000409错误是一个常见的问题,它通常在程序运行时出现,并且会导致程序崩溃或异常终止。本文将对ucrtbase.dll 0xc0000409错误进行解析,并提供解决方法和示例代码。
## 错误描述
当程序运行
《Programming Abstractions In C》学习第49天,p118-p122,总结如下:一、技术总结1.随机数(1)seedp119,"The initial value--the value that is used to get the entire process start--is call a seed for the random generator."二、数学总结1
日志异步工作器的实现
/*实现异步工作器*/
#ifndef __M_LOOPER_H__
#define __M_LOOPER_H__
#include <mutex>
#include <thread>
#include <condition_variable> //条件变量
#include "buffer.hpp"
#include
这篇博客主要是关于使用模板实现list的模拟。什么是list:list是一种序列式容器,可以在常数时间内在任意位置进行插入和删除操作,并且支持前后双向迭代。list的底层是双向链表结构,每个元素存储在独立的节点中,节点通过指针指向前一个元素和后一个元素。
list与forward_list非常相似,最主要的区别在于forward_list是单链表,只能进行向前迭代,因此更简单高效。
与其他序列式容
题目
给定 $n$ 个正整数 $a_i $,判定每个数是否是质数。
输入格式
第一行包含整数 $n$。
接下来 $n$ 行,每行包含一个正整数 $a_i$。
输出格式
共 $n$ 行,其中第 $i$ 行输出第 $i$ 个正整数 $a_i$ 是否为质数,是则输出 Yes,否则输出 No。
数据范围
$1≤n≤100,1≤a_i≤2^{31}−1$
输入样例:
2
2
6
输出样例:
Ye