
数论
文章平均质量分 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 · 1448 阅读 · 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 · 517 阅读 · 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 · 438 阅读 · 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 · 464 阅读 · 0 评论 -
斐波那契数列求解方法
求解斐波那契数列 1:递归算法: long long Fib(int n) { if (n <= 1) return n; return Fib(n - 1) + Fib(n - 2); } 但这会导致大量重复的计算 2:记忆化搜索/DP long long num[100] = { 0 }; long long Fib(int n) { if (n &l...原创 2018-07-16 15:08:07 · 635 阅读 · 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 · 236 阅读 · 0 评论