复杂度计算

1n中,能被2整除的有n/2个,能被3整除的有n/3个,……

则该算法的复杂度可这样计算:

O(n)=n/2×1+n/3×2+n/5×3+n/7×4+……

//O(n)~n×φ(n)

考虑到6这个数,它既是2的倍数,也是3倍数,因此还要用到容斥原理

//设能被第i个素数整除的正整数的集合为Ai

对于特定的一个整数k,该算法一定是在取得其最小的素因数,或者其本身是个素数时break出第二层循环。

对于6这个例子,我们要把他当有3这个因子的情况去掉。

考虑30,他的质因数有235,我们需要减去35这两种情况。

注:我们在计算(23)这一组时,对30减去3这种情况,(25)这一组减去5这种情况,(35)又减了一次5这种情况,因此要加(235)这一组的计算结果。只能说类似容斥原理。

不妨设

cnt=φ(n)

Pi为第i个素数

因此由容斥原理可得:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值