学习笔记::数论

整理一下茹老师的笔记:

1.线性筛法:对于每个数a,都筛去pa,p为a的最小质因数

2.欧拉定理:a^φ(b)=1(mod b) a和b互质 (符号打不出来)

证明:1.消去率(这个就不证了) 就是 a*c=b*c (mod p) c和p互质可推出 a=b (mod p)

   2.证明:x=φ(b)中所有数   y=a^φ(b)*x (mod b)

   因为消去率, 又因为 x=y (因为a和b互质)每个数和b互质,那么x=y

   把x,y中每个数相乘,有Πx=Πy (mod b) a^φ(b)*Πx=Πx (mod b) 因为Πx和b互质,由消去率 a^φ(b)=1 (mod b)

3.逆元:由费马小定理,也就是欧拉定理的弱化版:a^p-1=1 (mod p) a和p互质,因为φ(p)=p-1,求得a对于p的逆元为a^p-2.

这个东西有什么用呢?在算除法时,在模意义下b/a=b*a^p-2.

4.Miller-Rabin

1.费马小定理 2.二次探测定理

一个正奇数x是否为素数

设x=2^s*d

因为x^2=1 (mod p) 的解只有两个 所以多次分解,可以分解出一个1,一个-1,1继续分解,-1不管他

如果分不出来停止。有点忘了。。。

时间: 2024-10-29 19:09:42

学习笔记::数论的相关文章

[蒟蒻修炼计划][学习笔记]数论(二)

乘法逆元:若,则称为在意义下的乘法逆元. 本文介绍乘法逆元的三种求法. 扩展欧几里得求逆元 因为,所以设满足, 则可以用扩展欧几里得求关于的方程的一组解,即求出b. inline int exgcd(int a,int b,int &x,int &y){ if(!b){ x=1;y=0;return a; } int ret=exgcd(b,a%b,y,x); y-=a/b*x;return ret; } inline int inver{ r=exgcd(a,p,b,q); if(r!=

[蒟蒻修炼计划][学习笔记]数论(一)

扩展欧几里得 求二元一次不定方程的一组解. 当时,有一组解 : 当时,因为 , 所以设满足, 则 , 整理得 . 所以. 就可以在求gcd的过程中得到一组解. inline int exgcd(int a,int b,int &x,int &y){ if(!b){ x=1;y=0;return a; } else{ int ret=exgcd(b,a%b,y,x); y-=a/b*x;return ret; } } 欧拉函数 欧拉函数的定义:小于等于的正整数中与互质的数的个数. 当时,:

学习笔记--数论--莫比乌斯反演初认识

前言 本文只是用比较通俗的例子让大家了解一下什么是莫比乌斯反演,其中说明 (明明都是瞎猜)可能有纰漏.本人也是个蒟蒻,未能给出珂学证明,还望多多指教. 理论基础 "|"符号表示整除, a|b 表示b被a整除,也就是b有a这个因数,b=ka (k∈N). "∑ "求和符号 是什么 请先看这个例子: 假设有两个函数F(n),f(d),且d∈{x| x|n(即n被d整除)} 并有以下关系:F(n)等于所有f(d)之和. 比如:6能被1,2,3,6整除,所以F(6)=f(1

Chapter 2. OpenSSL的安装和配置学习笔记

Chapter 2. OpenSSL的安装和配置学习笔记 2.1 在linux上面安装OpenSSL我还是做点No paper事情比较在行,正好和老师的课程接轨一下.以前尝试过在Windows上面安装过openSSL,这次正好在Linux上面实现一下. 希望各位园友门纠错,征求意见中. 2.1.1 安装OpenSSL的系统环境和编译环境 测试环境:Linux MINT 16 Petra ? 1 2 3 4 5 6 $ lsb_release -a #查看linux发行版本系统信息 No LSB

Android学习笔记-回顾计划

人最怕的是,没有方向! 1.楔子: 本人接触Andrjoid开发也有一年多了,期间在一家外包公司独立开发了五六个项目.虽谈不上大牛,但自认小有所成.平时没什么爱好,就喜欢看看技术博客,试验各种开源代码,写写学习笔记. 最近感觉有点陷入瓶颈了,进步甚慢,却又不知该如何进一步提升自己.对于开发中遇到的很多问题,虽有所领悟,然不够系统,一些小知识点,也常有遗漏.觉得是时候系统的反思一下自己的知识体系了,于是决定制定一个回顾计划,综合自己看的博客.书籍,以及自己的开发实践,对一些常用的知识点进行整理.

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------