随笔分类 - 数论基础
摘要:欧几里得算法(gcd) 就是辗转相除法 作用:求gcd(a,b) 公式: \(gcd(a,b) = gcd(b,a\%b)\) 写法1: int gcd(int a , int b ){ return !b ? a : gcd(b, a % b); } 写法2 :位运算(超快) (a,b不能为0)
阅读全文
摘要:欧拉函数 大佬已经讲的很清楚了,证明非常清晰 互质: 两个数的最大公约数为 $1$ , 称这两个数互质 求一个数的欧拉函数: 利用公式 int phi(int n) { int ans = n; for (int i = 2; i <= n / i; i++) { if (n % i == 0) {
阅读全文
摘要:题目:P1835 素数密度 题目中区间的端点很大,但是区间的长度不长. 解题思路: 1.先用埃氏筛选掉 1 到 sqrt(R) 的合数 2.用第一步的素数表筛选掉 L 到 R 的合数 (一二步一起进行) 3.计算素数个数 代码: #include<bits/stdc++.h> using names
阅读全文
摘要:基础知识 最大公约数: 最大公约数就是两个数的最大公共因子 x = abc , y = bcdef (a ~ f 均为质因子) 则 gcd ( x , y ) = bc 计算方法: 1.质因数分解法,如上举例所示 2.欧几里得算法(辗转相除法) 算法原理:gcd(a,b) = gcd( b , a
阅读全文
摘要:基础知识 1.素数(质数): 素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。(prime number) 2.性质:(待填) 3.基本判断思路: 在一般领域,对正整数n,如果用2到 sqrt(n)之间的所有整数去除,均无法整除,则n为质数。 素数筛 1.暴力 按照基本判断思路
阅读全文
摘要:1.找筷子 解题思路: 要找出唯一单着的那个数,可以用异或的方式 我们已知 a ^ a = 0 ,对于存在偶数个的数字,迟早会互相抵消,奇数个的数字也会两两抵消,只剩下最后一个答案。 AC代码: #include<iostream> #include<cstdio> #include<algorit
阅读全文

浙公网安备 33010602011771号