数论(Java)
文章平均质量分 87
数论基础,算法竞赛基础,不少暴力进阶优化需要它。算法竞赛必学,才能初探题目,了解题目,深入题目,解决题目。
日月知行
若出其中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
阶乘后的零(数论)
数学知识,每个尾随的零都是由10的倍数贡献的,而10可以分解为2和5的乘积。因此,在阶乘中,每对2和5的组合就会产生一个10,从而增加一个尾随零。中,质因数2的出现次数是8次(在2、4、6、8、10中),而5的出现次数是2次(在5和10中)。因此,2的数量足够多,所以尾随零的数量由5的数量决定。2*5,2*10=2*5*2, 2*15=2*5*3, 2*20=2*5*4, 2*25=2*5*5(要再来一个偶数与多的5进行相乘);生成零的条件是阶乘运算时相乘有10的倍数的生成,原创 2025-03-18 20:49:58 · 925 阅读 · 0 评论 -
质数(数论):任何一个合数都能分解为多个质数相乘(递归模拟)
知道这一点,我们就可以不断的对一个数进行除(前提是从小到大从2开始),首先一直除2,再一直除3,一直除4(不可能除4,因为一直除2过了),一直除5,一直除6(不可能因为2,3以除过)......,外层循环结束后将ans与n进行比较,如果不同则还需要进行递归,如果相同说明最终的值为质数或为4,返回这个数。15除2除不尽,15除3,能除,除了一次,tem为15/3=5,ans+3;第一个数输入的n,第二个是运行后要替换的数,又因为,n要进行后续的判断,不能改变,要创建一个替代的变量。题目中有2个关键的变量,原创 2025-03-18 17:08:28 · 594 阅读 · 0 评论 -
质因数(数论):寻找质因数,一题多写
在写双层for循环时,当使用的元素不在是单纯的一个索引时,而是集合,数组....里的元素时,要写的代码会比较长。当我们在思考时,思路是正确的,而可能会不注意,将要使用数组或集合中的元素写成索引 i 或 j 等其他错误,并且不容易看出,这时使用强制for循环就可以将代码更加清晰,即使出错也更好看出。我们将这个数组乘积后的数的所用质数进行筛选质数的预处理,然后将原数组中的每一个元素依次对质数表中的数进行取余,如果取余结果为零,那么这个质数就是质因数之一。将上面的双层for循环改为强制for循环后更加简洁;原创 2025-03-15 22:19:35 · 655 阅读 · 0 评论 -
埃氏筛(Java):找出所有小于等于给定整数n的质数的算法
从最小的质数2开始,依次标记其倍数为非质数,剩余未被标记的数即为质数。√ni²是第一个未被标记的合数。原创 2025-03-09 22:50:34 · 513 阅读 · 0 评论 -
欧拉筛(线性筛):找出所有小于等于给定整数n的质数的算法
与埃氏筛不同,欧拉筛不是把素数的所有倍数标记为非素数,而是每扫过一个数(这个数用外循环的 i 来表示,遍历isPrime数组)(无论这个数是素数还是非素数)将该数与前面标记为素数的数相乘的数筛掉(内循环进行更新真正的质数primes质数列表,这样才能解决重复标记问题,时间复杂度降为O(n)原创 2025-03-10 23:43:20 · 1209 阅读 · 0 评论
分享