摘要:
唯一分解定理 1、算数基本定理 对于任何一个大于 1 的整数 a,a 一定能分解为若干个质数的幂的乘积形式,且该分解是唯一的。即 $a=p_1^{r_1}p_2^{r_2}...p_s^{r_s}$ 这是一个很重要的结论。数论的基础。 2、所有正约数的个数为$(1+r_1)(1+r_2)...(1+ 阅读全文
摘要:
思路很简单 直接爆搜 用bfs更好得到答案,从最高位往低位搜索。 但是时间会爆掉所以需要优化:对于已经搜到的某个数 $x$ ,如果有 $x \equiv y( mod\ n )$ 那么有 $ax+b \equiv ay+b$ 即下一次搜到同余的数就不用再搜索一次可以直接退出了。比如要凑到13的倍数, 阅读全文
摘要:
结论题呢 我们首先考虑数$1080=2^3*3^3*7$ 为了让前一个数能够整除后一个数,即后一个数能够被前一个数整除,我们必须有$x_i=kx_{i+1}$,且$x_i$和$kx_{i+1}$都是数$n$的因数,故$k$也应该是$n$的因数。 但是我们需要让这个序列最长,所以每一次乘的数$k$应该 阅读全文
摘要:
主要思想是贪心+搜索 首先我们考虑一个数$n=a_i^{p_i}$ 并且因数的个数为$\prod{(a_i+1)}$ 然后就OK了 对于一个反素数$n=2^a 3^b 5^c ...$,必然有且仅有连续的质因子2,3,5,7...且有$a>=b$ 否则就会有更小的数和它因数个数相同 所以我们可以直接 阅读全文
摘要:
算法1: 考虑对ab进行唯一分解($ p_i ^{a_i}$)然后就很好做了,但是分解的过程有点痛苦。。。。 算法2: 考虑$lcm(x,b_0)gcd(x,b_0)=xb_0$ 则$x=b_1gcd(x,b_0)/b_0$ 那么我们只需要枚举$gcd(x,b_0)$的值,就可以算出x,再带入与a的 阅读全文
摘要:
首先发现$n-m$是很小的一段 考虑对于一个合数$x$,其必然有一个质因子小于$sqrt(x)$ 所以这个题我们可以先求出$\sqrt{n+m}$内的所有质数,大概最大$10^5$ 然后对于每个质数,使用埃氏筛法的方法筛出$[n,n+m]$的合数即可 欧拉筛应该也可以吧) #include<iost 阅读全文
摘要:
水是挺水的 我们首先可以直接预处理出所有H-素数,再预处理出所有的H-半素数,最后求得答案即可。 对于H-素数,使用欧拉筛即可,稍微改一下,只枚举4x+1即可。 对于H-半素数,直接$O(n\sqrt n)$暴力判断即可 时间复杂度$O(n\sqrt n)$ 代码如下 #include<iostre 阅读全文
摘要:
朴素算法:对于一个数x,枚举小于 \(\sqrt x\) 的数看他有没有质数即可 因为没有大于$\sqrt x$的因数 筛法1:从2开始,将每个质数的倍数都标记成合数, 筛法2:对于一个数$i$,只用它的最小质因子筛它一次。 对于每一个数,都将它乘以某一个质数$prime[j]$得到一个新的合数$i 阅读全文