算法学习之 数论

数论

一.素数

v 素数(又称质数)就是除了1和本身以外没有其他的因子的大于1的正整数.
v 100以内的素数有{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97}
   1.筛选法 生成素数表 【 埃拉托斯特尼筛选法】

 当需要求某一区间[2,n]内的所有素数时,可以从2开始,对于当前素数p,将p^2后所有p的倍数筛去

 每个数最多被筛去一次
 每次找到下一个没有被筛到的数就是一个素数
  时间复杂度为O(nlgn)
  2.开根判断素数法
 二.最大公约数 与 最小公倍数
gcd:greatest common divisor
lcm:lowest common multiple
1.gcd求法
  欧几里德算法 即 辗转相除法
  另一种
(二进制算法)

          若a=b, gcd(a,b)=a

          若a和b均为偶数, gcd(a,b)=2*gcd(a/2,b/2)

          若a为偶数, b为奇数, gcd(a,b)=gcd(a/2,b)

          若a和b均为奇数, gcd(a,b)=gcd(a-b,b)

    不需要除法, 适合大整数


2.lcm求法
 两项相乘 再 除以这两项的gcd


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值