首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏花猪的学习记录

    数论基础(部分计算方法)

    正文 模重复平方计算 例1:计算 68879 mod 3337 例2:计算 97263533 mod 11413 所以 97263533 mod 11413 = 5761 扩展欧几里得计算 例:计算

    1.3K10编辑于 2022-02-22
  • 来自专栏密码学和区块链

    斯坦福大学密码学-数论简介 10

    ppt链接: 10-numth-annotated.pdf Notation 背景。 image.png 一些符号。 image.png 模运算。 image.png 最大公因数。 image.png 计算模e次方根 image.png image.png 计算-简单情况。 e与p-1互质。 image.png 当e与p-1不互质时,e为2时。平方根。 二次剩余。 image.png 计算合数模的e次方根。 需要因子分解合数N,再分别计算。 image.png 计算大整数的模 大整数的表示。 image.png 加减乘除时间复杂度。 image.png 计算离散对数有一个亚指数算法,一个n位的质数,运行时间的指数是n的立方根。 对于椭圆曲线群,运行时间的 ,一个合适的指数时间算法。

    1.7K00发布于 2020-11-05
  • 来自专栏Coggle数据科学

    数论数论四大定理

    按研究方法来看,数论大致可分为初等数论和高等数论。初等数论是用初等方法研究的数论,它的研究方法本质上说,就是利用整数环的整除性质,主要包括整除理论、同余理论、连分数理论。 高等数论则包括了更为深刻的数学研究工具。它大致包括代数数论、解析数论计算数论等等。 德国佛尔夫斯克曾宣布以10万马克作为奖金奖给在他逝世后一百年内,第一个证明该定理的人,吸引了不少人尝试并递交他们的“证明”。 若n为质数,则 φ(n) = n - 1 ,如11,1、2、3、4、5、6、7、8、9、10都是与11互质的数。 i++) { if(gcd(i, n) == 1) cnt++; } cout << cnt << endl; //根据通式计算

    3.9K10发布于 2019-09-12
  • 来自专栏陈黎栋的专栏啦

    数论——快速幂算法 快速计算a^b mod c的值

    // 快速计算 (a ^ p) % m 的值 __int64 FastM(__int64 a, __int64 p, __int64 m){ if (p == 0) return 1;

    1K40发布于 2020-02-18
  • 来自专栏blog(为什么会重名,真的醉了)

    数论-素数

    Now given any positive integer N (< 10^5), you are supposed to count the number of twin primes which

    1K30发布于 2020-09-15
  • 来自专栏奇妙的算法世界

    HDOJ 1018(数论

    Sample Input 2 10 20 Sample Output 7 19 思路 刚看到题的一瞬间,果断写了个高精度交了上去,TLE了,再看数据范围,嚯! 1e7,然后就去翻了题解,发现是数论问题,求阶乘位数有两种方法: 1.10m<n!<10(m+1) 若求得M,则M+1为答案。对方程两边以10为底求对数,得M<log10(n!) cin>>T; while(T--){ int n; cin>>n; double ans=0; for(int i=1;i<=n;i++){ ans+=log(i)/log(10

    54020发布于 2020-10-23
  • 来自专栏CSDN旧文

    数论--模板整理

    数论–康托展开与逆康托展开模板 数论–组合数(卢卡斯+扩展卢卡斯)模板 数论–Miller_Rabin判断素数 数论–中国剩余定理模板 数论–逆元(拓展欧几里得)模板 数论–逆元(费马小定理)模板 数学–数论–因子和线性筛 (模板) 数学–数论–随机算法–Pollard Rho 大数分解算法(纯模板带输出) 数学–数论–快速幂–最大公约数–位运算模板 线性筛求积性函数的模板 数学–图论–莫比乌斯线性筛模板 数学–数论—欧拉筛 模板 数学–数论–素数

    42810发布于 2020-10-28
  • 来自专栏码神随笔

    素数判断——数论

    GetUglyNumbur(1500); return 0; } 但是很遗憾没有拿满分,翻开我那几乎积灰的剑指offer,看到这个题是放到了用空间换时间的算法中,又想了想,之所以会超时,是因为上面的题解中计算了许多不是丑数的数据

    49320编辑于 2022-12-13
  • 来自专栏bigsai

    基础数论总结

    所以算法大致流程: 2: [i=(2+2)—>(+2)数组尾],4,6,8,10 * * 不是素数 3: [i=(3+3)—>(+3)数组尾],6,9,12 * * 不是素数 4: [i=4]不是素数, 计算方法: 计算n的分解方式。主要是通过数的自身对从最小的质数开始整除除一直到不能整除,直到跳出限制条件。 你可以从2到n;逐个遍历判断,满足条件的话就在数组中添加对应的count。 当然,每被计算一次的时候,这个数就要被除一次。 上面方法对于大的数据显然复杂度太高。 这里不是按照次幂计算的,而是按照实打实的一个一个数判断的。 根据Xzhila的传统, 竹子的分数=Φ(竹子的长度) (Xzhilans非常喜欢数论)。对于您的信息,Φ(n)=小于n的数字,它们相对于素数(除了1之外没有公约数)到n。

    1.1K30发布于 2019-09-24
  • 来自专栏CSDN旧文

    数学--数论--素数

    定义判断: bool isPrime (int n) { for(int i=2;i*i<=n;i++) { if(n%i==0) return false; } else return false; } 埃氏筛法 int primes[N],cnt; bool bprime[N]; void getPrime(int n){ memset(bprime,false,sizeof(bprime)); bprime[0]=true; bprime[1]=true;

    62810发布于 2020-11-05
  • 【HPUoj】Bet(数论

    时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 状态

    28810编辑于 2025-08-27
  • 来自专栏奇妙的算法世界

    codeforces 573A (数论

    ; typedef pair<long,long> PLL; typedef pair<char,char> PCC; typedef long long LL; const int N=2*1e5+10

    44410发布于 2020-10-23
  • 来自专栏月亮与二进制

    C++函数论

    关于C++的函数有很多知识,因为其函数有多种变体,可以说C++创作者为了开发方便,打开了很多个后门让编程人员随心所欲地炫技使用,但私以为这也造成了使用函数时的复杂度,如果真的在代码中使用各种变体,虽然确实可以让代码看上去简洁高级,但是对于代码阅读来说却并不是特别友好。

    69410编辑于 2022-01-07
  • 来自专栏C++

    【算法】数论与数学

    i = l; i <= r; i++) { int tmp = i; while (tmp) { if (tmp % 10 == 2) ret++; tmp /= 10; } } cout << ret; return 0; } 本篇文章的分享就到这里了,如果您觉得在本文有所收获

    17500编辑于 2025-03-15
  • 来自专栏叶子的开发者社区

    数论大小(引用)

    要求:定义一个函数,无返回值,函数参数是三个整数参数的引用,例如int &a, int &b, int &c。在函数内通过引用方法来对三个参数进行排序。主函数调用这个函数进行排序。

    24210编辑于 2023-07-28
  • 来自专栏编程驿站

    C++初等数论

    除了理解数论概念,更重要能融会贯通。把对数论相关知识的认知运用到编程领域。 2. 同余式 概念 如果两个整数a,b 的差值除另一个整数(m)的值为一个整数,同称a,b对模m同余数。 余数判别法 基本思想:求N被m除的余数,先找到一个较简单的数R,使得N与R对于除数m同余.由于R是一个较简单的数,所以可以通过计算R被m除的余数来求得N被m除的余数。 一个大于10的自然数去除90、164后所得的两个余数的和等于这个自然数去除220后所得的余数,则这个自然数是多少? 7.模运算意义下的逆元 在信息学竞赛中,当答案过于庞大的时候,我们经常会使用到模运算(Modulo Operation)来缩小答案的范围,以便输出计算得出的答案。 是数论中一个重要定理。又称中国余数定理。

    97300编辑于 2024-03-11
  • 来自专栏mythsman的个人博客

    数论基础专题小结

    ans=ans*a%mod; } n>>=1; a=a*a%mod; } return ans; } int getHead(int n,int k){ return pow(10,2 +fmod(k*log10(n),1)); } int main(){ int t; scanf("%d",&t); for(int i=1;i<=t;i++){ int n,k;

    31810编辑于 2022-11-14
  • 来自专栏owent

    数论模板(个人模板)

    num_prime; i ++) p[i] = C_Cache[0][i] - C_Cache[1][i] - C_Cache[2][i]; return r; } // 取模计算 mat[r1][i] = mat[r1][i] - mat[r2][i]; } } //高斯消元(整数) //返回0为有无穷解或无解,返回1有唯一解并计算答案

    3.4K40发布于 2018-08-01
  • 来自专栏高性能服务器开发

    手机计算器中输入:10%+10% = ?

    这是一个历史遗留问题,属于语法糖,叫做百分计算器。 按人类语义的理解,你去买东西,100 元钱减去 10%,那就是 90 元。早期的计算器就可以直接这样写 100 - 10%。 再比如,一只股票股价 10 元,增长了 50%,可以直接写 10 + 50%。这么设计更深层次的原因可能与早期计算器的按键数量有限,以及单步运算的性质有关。具体有答主已经作了回答。 手机计算器保留了这种特性。 10% + 10% 就是 0.11。 至于部分国内计算器(如魅族)结果是 0.2,是因为国内手机厂商自己做了修改,符合中国人打几折的说法。 百分计算识别条件: exp1 [+-] exp2 % [+-] exp3 = exp1*(1 [+-] exp2 %)[+-] exp3 exp1 的值会被优先计算,比如 5 + 5 - 10% =9 如 exp2 与 exp3 之间为 [ * / ] ,则会将 exp2 % [* /] exp3 作为整体计算,比如 5 + 10% * 10 = 6 有关在 exp2% 前后加括号的问题,涉及代码处理

    1.5K30发布于 2019-09-08
  • 来自专栏数据结构与算法

    快速数论变换(NTT)小结

    NTT 在FFT中,我们需要用到复数,复数虽然很神奇,但是它也有自己的局限性——需要用double类型计算,精度太低 那有没有什么东西能够代替复数且解决精度问题呢? : *p1++) #define swap(x,y) x ^= y, y ^= x, x ^= y #define LL long long const int MAXN = 3 * 1e6 + 10 while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10

    58000发布于 2018-05-30
领券