- 博客(13)
- 收藏
- 关注
原创 阶乘后的零(数论)
数学知识,每个尾随的零都是由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
原创 质数(数论):任何一个合数都能分解为多个质数相乘(递归模拟)
知道这一点,我们就可以不断的对一个数进行除(前提是从小到大从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
原创 质因数(数论):寻找质因数,一题多写
在写双层for循环时,当使用的元素不在是单纯的一个索引时,而是集合,数组....里的元素时,要写的代码会比较长。当我们在思考时,思路是正确的,而可能会不注意,将要使用数组或集合中的元素写成索引 i 或 j 等其他错误,并且不容易看出,这时使用强制for循环就可以将代码更加清晰,即使出错也更好看出。我们将这个数组乘积后的数的所用质数进行筛选质数的预处理,然后将原数组中的每一个元素依次对质数表中的数进行取余,如果取余结果为零,那么这个质数就是质因数之一。将上面的双层for循环改为强制for循环后更加简洁;
2025-03-15 22:19:35
655
原创 一题多写(2),打牢基础,哈希map相关用法
这题的解法巧妙解决了这个问题,当有重复的元素时,不会查找i==hash.get(target-nums[i])时的元素(已被覆盖掉了),而是可以查找i!=hash.get(target-nums[i])即重复元素最后的出现(重复元素最后保留下来的)。但是普适性还是法二更好。
2025-03-13 21:50:34
1198
原创 一题多写(1),打牢基础(哈希set相关用法)
set结合无序,不重复,使用set.add()或set.remove()返回true或false,set中添加重复元素时,如果已有相同元素,已有的元素不变,后续添加元素不会成功,可以将集合转换成数组,默认是Object,可以进行类型转换,不需要再转化成int型,Java有自动拆箱功能,迭代器可以获取迭其中的下一个元素。
2025-03-12 21:47:58
1327
原创 java集合通用方法
在Java集合框架中,不同集合类(如ListSetMap等)有一些通用方法,也有一些特定于子接口或实现类的方法。以下是常见集合接口的。
2025-03-11 17:30:27
654
原创 欧拉筛(线性筛):找出所有小于等于给定整数n的质数的算法
与埃氏筛不同,欧拉筛不是把素数的所有倍数标记为非素数,而是每扫过一个数(这个数用外循环的 i 来表示,遍历isPrime数组)(无论这个数是素数还是非素数)将该数与前面标记为素数的数相乘的数筛掉(内循环进行更新真正的质数primes质数列表,这样才能解决重复标记问题,时间复杂度降为O(n)
2025-03-10 23:43:20
1209
原创 埃氏筛(Java):找出所有小于等于给定整数n的质数的算法
从最小的质数2开始,依次标记其倍数为非质数,剩余未被标记的数即为质数。√ni²是第一个未被标记的合数。
2025-03-09 22:50:34
513
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅