![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 85
ParadiseHeaven
Learn to Think && Ask
展开
-
素数判断
素数判断素数定义:只能被1和它本身整除的自然数1.暴力(2到n-1) int isPrime_1(int num) { for (int i = 2; i < num; i++) if (num%i == 0) return 0; return 1;} 2.暴力(改进 2到sqrt(num))若一个数可以因式分解,那么分解得到的两个数一定...原创 2017-11-23 15:13:59 · 1377 阅读 · 0 评论 -
快速幂(取模)
快速幂(取模)引例:计算a11分析:11的二进制表示为1011,11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1,所以a11可以表示为a11=a(2^0+2^1+2^3)二进制顺序为1011, 而运算顺序为a^(2^0) * a^(2^1)* a^(2^3)注:一个数&1即为取二进制的最末位。并且,x&1 == 0, x为偶数; x&1 == 1...原创 2017-11-23 15:41:18 · 448 阅读 · 0 评论 -
GCD算法
1.欧几里得算法 long gcd(long a, long b) { while (b) { long t = a%b; a = b; b = t; } return a;} 2.减法 long gcd(long a, long b) { if (a == 0) return b; while (b) { if (a > b) ...原创 2018-01-29 10:40:04 · 391 阅读 · 0 评论 -
大数阶乘
#include <iostream>#include <algorithm>using namespace std;int num[900001]; //储存每一位所得到的数int main() { int temp, digit, n, i, j = 0; //temp每次的得数 digit每次得数的位数 scanf("%d", &n);...原创 2018-01-29 21:57:15 · 406 阅读 · 0 评论 -
斐波那契数列求解方法
求解斐波那契数列 1:递归算法:long long Fib(int n) { if (n <= 1) return n; return Fib(n - 1) + Fib(n - 2);}但这会导致大量重复的计算2:记忆化搜索/DPlong long num[100] = { 0 };long long Fib(int n) { if (n &l...原创 2018-07-16 15:08:07 · 543 阅读 · 0 评论 -
矩阵快速幂
矩阵快速幂1.矩阵乘法:const int N = 100;int c[N][N];void multi(int a[][N], int b[][N], int n){ memset(c, 0, sizeof(c)); for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) for (int k...原创 2018-07-16 15:38:56 · 197 阅读 · 0 评论