分类目录归档:数论算法

NTT算法和FFT极为相似,所不同之处只是在于选取的数域,对于FFT而言选取了复数域上的单位根来实现分治,而NTT选取的则是一类特殊的有限域上具有类似性质的原根来实现分治。

本文简述NTT原理并以C++实现NTT。

继续阅读

关于FFT的原理可以参照之前的一篇课程报告:[Report] 基于快速傅里叶变换的大数乘法原理分析
以及_Orchidany的博客:FFT·快速傅里叶变换

本文主要参照该博客实现方式,通过C++实现FFT,对博客中部分内容作了补充说明,包含递归法和迭代法。

继续阅读

RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的,RSA 就是他们三人姓氏开头字母拼在一起组成的。
——Wikipedia

RSA算法加密的安全性基于大整数因数分解的复杂度,算法设计思路简单,只用到部分简单初等数论的知识,具有充分的美感,容易让人理解和接受。
本文将阐述RSA算法在进行加密解密和签名时的数学原理,以及RSA算法的安全性。

继续阅读

课程期末报告,刚刚老师讲了DFT,我突然想起来有这么个有趣的东西,就写了(不含程序)。

基于快速傅里叶变换的大数乘法原理分析.pdf
基于快速傅里叶变换的大数乘法原理分析.pdf.sig

继续阅读

本文主要阐述整除及其性质,介绍素数与合数,最大公因数与最小公倍数,配合B站相应视频,兼顾到OI和数学专业书籍知识点的平衡,在尽量保证知识体系完整的情况下内容尽量精简。
讲义写完后感觉费时费神而且照着讲义讲也没多大意义,下次可能不会再写那么详细的了。
相应习题解答在参考文献上都有请自行查阅。

继续阅读

本次大作业要求写一个迭代器和一个生成器来生成质数序列。
下面使用轮子优化的埃氏筛实现迭代器和Miller-Rabin素性测试算法实现生成器。前者可以生成2开始的特定范围质数序列,后者可以生成特定数值开始的质数序列。

继续阅读

求解模意义下的乘法逆元是算法竞赛中的重要内容,通常用于解决模意义下的分数数值表示或者模意义下的除法,本文试图通过扩展欧几里得、费马小定理和欧拉定理、递推、阶乘递推等算法求解乘法逆元。

继续阅读

Q:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?
A:三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百零五便得知。

可能高二时候我也没想到,这个当时我特别喜欢的算法书上的定理,再次见到是在数学专业课高代上,而不是计算机算法课上。
中国剩余定理又称孙子定理,中国古代求解一次同余式组(见韩信点兵和曹冲养猪)的方法,最早可见于南北朝的数学著作《孙子算经》。

本文给出中国剩余定理的证明及程序实现。

继续阅读

8/8