数学知识(一)

news2024/11/16 12:00:53

一、数论

1.1质数

定义:在所有大于1的自然数,如果只包含1和本身这两个约数,就被称为质数(素数).

质数的判断:试除法

bool is_prime(int n)
{
    if(n < 2) return false;
    for(int i = 2;i <= n / i;i ++)
    {
        if(n % i == 0)
            return false;
    }
    return true;
}

分解质因数

基本思路:从小到大枚举n的所有约数。

void divide(int n)
{
    for(int i = 2;i <= n;i ++)
    {
        if(n % i == 0)
        {
            int s = 0;
            while(n % i == 0)
            {
                n /= i;
                s ++;
            }
            printf("%d %d\n",i,s)
        }
    }
}

埃氏筛法

#include<iostream>
#include<algorithm>

using namespace std;

int primes[N],cnt;
bool st[N];

void get_prime(int n)
{
    for(int i = 2;i <= n;i ++)
    {
        if(!st[i])
        {
            primes[cnt ++] = n;
            for(int j = i + i;j <= n;j += i) st[j] = true;
        }
    }
}

线性筛法

保证了每个数都是被他的最小质因子所筛掉

#include<iostream>
#include<algorithm>

using namespace std;

int primes[N],cnt;
bool st[N];

void get_primes(int n)
{
    for(int i = 2;i<= n;i ++)
    {
        if(!st[i]) primes[cnt ++] = i;
        for(int j = 0;primes[j] <= n / i;j ++)
        {
            st[primes[j] * i = true;
            if(i % primes[j] == 0) break;  //primes[j]一定是i的最小质因子
         }
    }
}

1.2约数

 试除法求约数

vector<int> get_divisors(int n)
{
    vector<int> res;
    
    for(int i = 1;i <= n / i;i ++)
        if(n % i == 0)
        {
            res.push_back(i);
            if(i != n / i) res.push_back(n / i);
        }
    sort(res.begin(),res.end());
    return res;
}

约数个数与约数之和

欧几里得算法

//返回a与b的最大公约数
int gcd(int a,int b)
{
    return b ? gcd(b,(a % b) : a);
}

二、欧拉定理

2.1欧拉函数

定义:X(n)表示1~n中与n互质的个数

算法步骤:

  1. 从1~N中去掉p1,p2,...,pk的倍数
  2. 加上所有Pi * Pj的倍数
  3. 减去所有Pi * Pj * Pk的倍数
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

int main()
{
    int n;
    cin>>n;

    while(n --)
    {
        int a;
        cin>>a;

        int res = a;
        //分解质因数
        for(int i = 2 ;i <= a;i ++)
        {
            if(a % i == 0)
            {
                res = res / i * (i - 1);
                while (a % i == 0) a /= i;
            }
        }
        if(a > 1) res = res / a * (a - 1);

        cout<<res<<endl;
    }
    return 0;
}

快速幂 

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;

//求a^k % p
int main(int a,int k,int p)
{
    int res = 1;
    while(k)
    {
        //如果当前k的末位为1,则
        if( k & 1) res = (LL)res * a % p;
        //删除k的末位
        k >>= 1;
        //把a平方
        a = (LL) a * a % p;
    }
    return res;
}
int main()
{
    int n;
    scanf("%d",&n);
    
    while(n --)
    {
        int a,k,p;
        scanf("%d%d%d",&a,&k,&p);
        
        printf("%d\n",qmi(a,k,p));
    }
    return 0;
}

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

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

相关文章

一文学会git常用命令和使用指南

文章目录 0. 前言1.分支分类和管理1. 分支分类规范&#xff1a;2. 最佳实践3. 分支命名规范示例&#xff1a;4. 分支管理方法&#xff1a; 2. commit 注释规范1. 提交注释结构&#xff1a;2. 提交注释的准则&#xff1a; 3. git 常用命令1. git pull 核心用法2. git push 命令1…

C++初阶 - 6.模板初阶

目录 1.泛型编程 2.函数模板 2.1函数模板的概念 2.2函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 1.泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left…

SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring MVC入门 一、Spring MVC概述二、入门案例2.1导入Sp…

【宝藏系列】Linux 常用磁盘管理命令详解

【宝藏系列】Linux 常用磁盘管理命令详解 文章目录 【宝藏系列】Linux 常用磁盘管理命令详解前言1️⃣ df2️⃣du3️⃣fdisk&#x1f4df;磁盘格式化&#x1f4e0;磁盘检验⌨️磁盘挂载与卸除&#x1f4c0;卸载/dev/hdc6 前言 Linux磁盘管理常用三个命令为df、du和fdisk。 df…

Java框架(九)--Spring Boot入门(1)

SpringBoot 2.x入门简介 学前基础 Maven Spring MVC理念 开发环境 Spring Boot官网版本介绍 https://spring.io/projects/spring-boot#learn 我们点击 Reference Doc. &#xff0c;再点击Getting Started&#xff0c;就可以看到官网系统环境说明了 官网系统环境说明 Sp…

Nginx安装和Nginx配置虚拟主机

Nginx安装 源码包获取地址&#xff1a;http://nginx.org/download/ RPM包获取地址&#xff1a;http://nginx.org/packages/centos/7Server/x86_64/RPMS/ RPM安装 这里选择的RPM包是 nginx-1.22.0-1.el7.ngx.x86_64.rpm [rootlocalhost ~]# yum install nginx-1.22.0-1.el7.…

RabbitMQ:概念和安装,简单模式,工作,发布确认,交换机,死信队列,延迟队列,发布确认高级,其它知识,集群

1. 消息队列 1.0 课程介绍 1.1.MQ 的相关概念 1.1.1.什么是MQ MQ(message queue&#xff1a;消息队列)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是message 而已&#xff0c;还是一种跨进程的通信机制…

k8s集群部署nacos,采用的是 emptyDir 临时目录挂载

官方参考地址&#xff1a;https://nacos.io/zh-cn/docs/use-nacos-with-kubernetes.html 说明&#xff1a; 1、官网采用的nfs持久化部署 我将nacos持久化改成 emptyDir 临时目录挂载&#xff0c;同时又能满足自行调节nacos集群实例数。 2. emptyDir 临时目录挂载的nacos.ya…

记录 Vue3 + Ts 类型使用

阅读时长: 10 分钟 本文内容&#xff1a;记录在 Vue3 中使用 ts 时的各种写法. 类型大小写 vue3 ts 项目中&#xff0c;类型一会儿大写一会儿小写。 怎么区分与基础类型使用? String、string、Number、number、Boolean、boolean … 在 js 中&#xff0c; 以 string 与 String…

TS协议之PAT(节目关联表)

1. 概要 PAT&#xff1a;节目关联表&#xff0c;与PMT成对出现&#xff0c;包含所有的频道编号&#xff1b;是解析ts数据的起点。 PAT数据结构如下&#xff1a; PAT数据结构 字段分析&#xff1a; TS头&#xff1a;参考TS协议之PES&#xff08;数据包&#xff09;&#xf…

Cpp学习——模板

模板&#xff1f; 目录 模板&#xff1f; 1.介绍 2.函数模板的使用 3.函数模板的强制转换or显式调用 四,模板的分类 1.介绍 在Cpp3.0中&#xff0c;祖师爷便引入了模板的概念。这是一个重大的变革&#xff0c;为后来的Cpp标准化打下了铺垫。也正是因为有了模板&#xff0…

centos命令

1 使用 ps 命令查看 Redis 进程&#xff1a; ps -ef | grep redis如果 Redis 正在运行&#xff0c;你将会看到类似如下的输出&#xff1a; redis 1234 1 0 Jul28 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379如果 Redis 没有运行&#xff0c;你将不会看…

【第一阶段】kotlin的when表达式

1.Java 的if /when是语句 kotlin的if/when是表达式&#xff0c;表达式是有返回值的 java中void是个关键字&#xff0c;Unit在kotlin中是个类 2.当使用when语句的时候必须有一个不满足的值即else: fun main() {var week:Int5val info when(week){1->"今天是星期一"…

0803|IO进程线程day6 【线程】概念+相关函数

一、线程的概念 1.1 什么是线程&#xff1f; 1&#xff09;线程是一个进程并发执行多种任务的机制。 并发&#xff1a; 单核cpu多个任务同时运行。cpu以ms级别的速度进程进程调度&#xff0c;切换进程和线程。 串行、并发、并行&#xff1a; 并行&#xff1a;多个任务在多核C…

数据结构—树和二叉树

5.树和二叉树 5.1树和二叉树的定义 树形结构&#xff08;非线性结构&#xff09;&#xff1a;结点之间有分支&#xff0c;具有层次关系。 5.1.1树的定义 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个结点的有限集。 若n0&#xff0c;称为空树&#x…

链表的总体涵盖以及无哨兵位单链表实现——【数据结构】

&#x1f60a;W…Y&#xff1a;个人主页 在学习之前看一下美丽的夕阳&#xff0c;也是很不错的。 如果觉得博主的美景不错&#xff0c;博客也不错的话&#xff0c;关注一下博主吧&#x1f495; 在上一期中&#xff0c;我们说完了顺序表&#xff0c;并且提出顺序表中的问题 1. 中…

C++ ------ 类和对象的深究

文章目录 构造函数初始化列表概念特性 explicit关键字 static成员概念特点 友元友元函数友元类概念特性 内部类概念特点 匿名对象拷贝对象时的一些编译器优化 构造函数 我们来看下面的代码&#xff1a; #include <iostream> using namespace std;class Date { public:D…

三周目创作纪念日

机缘收获日常成就憧憬 机缘 最初成为创作者的初心 实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流 收获 在创作的过程中都有哪些收获 获得了很多粉丝的关注获得了很多正向的反馈&#xff0c;如赞、评论、阅读量等认识了很多志同道合的领域同行 日常 当前创…

【零基础学Rust | 基础系列 | Hello, Rust】编写并运行第一个Rust程序

文章目录 前言一&#xff0c;创建项目二&#xff0c;两种编译方式1. 使用rustc编译器编译2. 使用Cargo编译 总结 前言 在开始学习任何一门新的编程语言时&#xff0c;都会从编写一个简单的 “Hello, World!” 程序开始。在这一章节中&#xff0c;将会介绍如何在Rust中编写并运…

CSS学习记录(基础笔记)

CSS简介: CSS 指的是层叠样式表* (Cascading Style Sheets)&#xff0c;主要用于设置HTML页面的文字内容&#xff08;字体、大小、对齐方式&#xff09;&#xff0c;图片的外形&#xff08;边框&#xff09; CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素 CSS 节省…