[线筛五连]线筛约数和

数论---整除与素数---筛法(素数筛,约数个数筛,约数和筛) 文章目录素数定理整数的标准分解(唯一分解)互质: 素数定理 整数的标准分解(唯一分解) 互质: 互质(Coprime):两个数没有公共的因数(除1以外),则这两个数互质。 将互质的两个数分别唯一分解后,两个积式中不会出现相同的质数。 ... 阅读详情

没做到过要用这玩意儿的。。。

线筛约数和

约数和的定义

定义如它的名字所示,表达式如下:

σ1(x)=∑d|xdσ1(x)=∑d|xd
约数和的性质

根据算术基本定理,计算约数和有个公式,设x=pa11pa22...pannx=p1a1p2a2...pnan,那么有:

σ1(x)=(1+p1+p21+...+pa11)(1+p2+p22+...+pa22)...(1+pn+p2n+...+pann)σ1(x)=(1+p1+p12+...+p1a1)(1+p2+p22+...+p2a2)...(1+pn+pn2+...+pnan)

积性也很好证,两个互质的数拥有两个不同的质因数集合,根据上面的公式,显然是可以直接乘起来的。

其他的性质因为没用过,也不太了解。。。

约数和的线筛

按照惯例,设T=i×p[j]T=i×p[j]。

根据线筛σ0(x)σ0(x)的套路,我们也开一个数组prod[i]prod[i]表示以11为首项,i的最小质因数为公比,项数为ii的最小质因数的指数的等比数列的和。

1.当T为素数时,TT的因数只有1和它本身,所以σ1(T)=prod[i]=T+1σ1(T)=prod[i]=T+1;

2.当TT拥有多个最小质因子(即i mod p[j]=0)时,因为p[j]p[j]为ii的最小质因子,那么T与ii相比,就是在1+p[j]+p[j]2+...+p[j]n这个等比数列里比ii多了一个p[j]n+1,所以有:prod[T]=prod[i]×p[j]+1,σ1(T)=σ1(i)×prod[T]prod[i]prod[T]=prod[i]×p[j]+1,σ1(T)=σ1(i)×prod[T]prod[i];

3.当TT的最小质因子都只有一个(即i mod p[j]≠0)时,p[j]p[j]为TT的最小质因子,所以有prod[T]=p[j]+1,σ1(T)=σ(i)×(p[j]+1);

综上:

σ1(T)=⎧⎩⎨⎪⎪⎪⎪T+1σ1(i)×prod[T]prod[i]σ1(T)=σ(i)×(p[j]+1)T∈Primei mod p[j]=0i mod p[j]≠0σ1(T)={T+1T∈Primeσ1(i)×prod[T]prod[i]i mod p[j]=0σ1(T)=σ(i)×(p[j]+1)i mod p[j]≠0
代码
void get()
{
    R i,j,t;
    check[1]=prod[1]=sumd[1]=1;
    for(i=2;i<=N;++i)
    {
        if(!check[i])prod[i]=sumd[i]=1+i,p[++p[0]]=i;
        for(j=1;j<=p[0];++j)
        {
            t=i*p[j];if(t>N)break;
            check[t]=1;
            if(i%p[j]==0){prod[t]=prod[i]*p[j]+1;sumd[t]=sumd[i]/prod[i]*prod[t];break;}
            prod[t]=p[j]+1,sumd[t]=sumd[i]*(p[j]+1);
        }
        sumd[i]+=sumd[i-1];
    }
}
Python_4 Python_47-1 奖金计算,循环与多分支(高教社,《Python编程基础及应用》习题6-5) (4 分)7-2 找出肇事者,循环与布尔逻辑(高教社,《Python编程基础及应用》习题6-6) (6 分)7-3 统计字符串列表中每个字母出现的次数(高教社,《Python编程基础及应用》习题6-8) (4 分)7-4 输出一个数的因子 (22 分)7-5 统计输入字符串中的单词个数及单词的平均长度(高教社,《Python编程基础及应用》习题7-7) (3 分)7-6 Calculate the lengt 阅读详情

相关推荐

告别混乱!在Unity中为Best MQTT v3设计清晰的服务层:配置、连接、订阅发布模块拆分指南

本文详细介绍了如何在Unity中使用Best MQTT v3插件构建清晰的服务层架构,包括配置管理、连接服务、订阅管理和发布服务的模块化拆分。通过解耦设计、事件驱动和接口抽象,提升代码可维护性和可测试性,适用于物联网和实时通信开发场景。

weixin_30576827的博客 357

线性筛 [约数个数/约数和]

刚才手动推了一下 用线性筛筛约数个数和约数和,就顺便写篇博客记录一下。不过网上应该也有不少人推过了。

ControlBear的博客 1万+

STM32驱动AS5600磁性旋转位置传感器模块

文章目录简介引脚定义I2C接口写数据读数据从指定的地址开始读数据驱动程序cubeMX配置驱动程序`bsp_as5600.h``bsp_as5600.c`测试程序参考资料 简介 AS5600 是一款易于编程的磁性旋转位置传感器,具有高分辨率 12 位模拟或 PWM 输出。 这种非接触式系统测量径向磁化轴上磁铁的绝对角度。 该 AS5600 专为非接触式电位计应用而设计,其坚固的设计消除了任何同质外部杂散磁场的影响。 引脚定义 I2C接口 7位设备地址为0x36(二进制表示为0110110) 支持标准模式和

ApexYuan 1万+

欧拉筛

欧拉筛法 众所周知欧拉筛法一般用于在线性时间内筛选出 1~n 范围内的质数,但是在数论问题中欧拉筛法的用途不仅仅是筛素数,它还可以干其他三件事,只不过这些问题被提及的次数比较少。 欧拉筛法可以干哪些事呢? 求 1~n 之间所有质数 求 1~n 之间所有自然数的欧拉函数 φ(x) 求 1~n 之间每个数的因子个数 求 1~n 之间每个数的因数和 筛质数 这个大家应该很熟悉了,这里就写一个关键点吧。 欧拉筛法核心思想:每个合数只被自己的最小质因子筛一次。 对 i%prime[j]==0 时即跳出循环的解释:

weixin_43731005的博客 624

三相逆变器拓扑结构的分析及应用场景

三相逆变器是电力电子领域中广泛应用的一种设备,用于将直流电转换为交流电。不同的拓扑结构在性能、成本、复杂度和应用领域上存在差异。小编将在本文中将进一步拓展对三相逆变器拓扑结构的分析,并探讨其适用的应用场景。

道合顺的博客 2235

USB设备识别码VID和PID详解:如何查询和自定义你的设备ID

本文详细解析了USB设备识别码VID和PID的核心作用、查询方法及自定义配置技巧。VID(供应商识别码)和PID(产品识别码)是USB设备的唯一身份证,用于驱动匹配和功能识别。文章提供了Windows和Linux系统下的查询方法,并探讨了如何合法获取和自定义VID/PID,适合硬件开发者和DIY爱好者参考。

weixin_29168675的博客 1455

【二次爆炸记·第二弹】(欧拉筛法求约数和)Savrsen

文章目录题目题目描述输入格式输出格式样例样例输入1样例输出1样例输入2样例输出2解析欧拉筛法 题目 题目描述 如果一个数等于它的所有因数(小于自身的)之和,那么这个数就是完美的。例如,28是完美的,因为28=1+2+4+7+1428=1+2+4+7+1428=1+2+4+7+14。 基于这个定义,我们数字n的不完美度定为f(n)f(n)f(n),它等于n与n的所有因数(小于n的)之和的差的绝对值...

fsy的博客 1599

Tiff、jpg图片怎么样添加地理坐标信息

Tiff、jpg图片怎么样添加地理坐标信息 一般,外业调查只有地图资料,如专题图、或者地形图,如何把这些地图资料的扫描地图带上坐标信息,从而内业实现信息化处理?以上问题,可以解决,但根据不同情况有不同的处理方法。     第一种,上面有经纬度外框,图片是矩形,但是没有地理信息。 通过图框的两个角的坐标确定范围,分别是左上(140°E,30°N);右下(150°W,30°N) 解决方

树木_xzw的博客 2万+

线性筛d&&sd(约数个数&&约数和)

ddd函数 d(n)d(n)d(n)表示n的约数个数和 百度一下,我们就可以得到一个计算d函数的暴力做法 设n=pa11pa22...pakkn=p1a1p2a2...pkakn=p_1^{a_1}p_2^{a_2}...p_k^{a_k} d(n)=(a1+1)(a2+1)...(ak+1)d(n)=(a1+1)(a2+1)...(ak+1)d(n)=(a_1+1)(a_2+1)...(...

Coco_T的博客 1690

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2340

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

kngines 1834

线性筛约数个数和、约数和

筛约数个数和 理论基础: 1、对n质因数分解,n=p1^k1 * p2^k2 * p3^k3 …… 则n的约数个数为(k1+1)*(k2+1)*(k3+1)…… 2、线性筛素数时,用i和素数pj来筛掉 i*pj, 其中pj一定是i*pj的最小素因子 如果i是pj的倍数,pj也是i的最小素因子 设t[i] 表示i的约数个数,e[i] 表示i的最小素因子的个数 A、如果i是...

weixin_34185560的博客 256

Python爬虫实战:爬取ETF基金持仓变化

在python复制编辑本文详细介绍了如何使用Python的Scrapy框架爬取ETF基金的持仓变化信息,包括项目的搭建、数据的提取与存储、以及数据的可视化分析。通过本项目,读者可以掌握基本的网页爬虫技术,并应用于实际的财经数据采集与分析中。

2201_76125261的博客 629

[线筛五连]线筛约数个数

伪模板链接:https://www.luogu.org/problemnew/show/P3327 线筛约数个数 约数个数的定义 为了格式,写了个这玩意儿。。。 这定义应该很清楚了,写个式子吧。。。 σ0(x)=∑d|x1σ0(x)=∑d|x1\sigma_0(x)=\sum_{d|x}1 约数个数的性质 设x=pa11pa22...pannx=p1a1p2a2...pnanx=...

ShadyPi的IT笔记 387

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[数论]莫比乌斯反演入门

莫比乌斯反演常用技巧与性质的梳理及部分证明 寒假的时候雍老师就跟我们讲了,可惜当时是真的傻逼,雍老师讲的辣么详细都听不懂。。。考试全靠背公式,打暴力。这次才算是把寒假的坑填了大半,虽然我现在还是很菜。。。 前置知识 线筛五连: (1)线筛素数 (2)线筛欧拉函数 (3)线筛莫比乌斯函数 (4)线筛约数个数 (5)线筛约数和 对上述函数的定义与暴力求解(在上面的链接里均有提到)...

ShadyPi的IT笔记 1764

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

递归算法经典实例_字节面试官不讲武德!开局来个算法五连问给我干懵了。。。...

文章的开头大家先来看一看一道字节的算法题,看是否能做出来:给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一组的不需要逆序。(不能使用队列或者栈作为辅助)大家有没有一脸懵逼的感觉?(我也不会)曾经有个说法,程序=数据结构+算法。这在面向过程的编程语言流行的年代是很受推崇的。然而,随着时代的发展,各种编程语言...

weixin_39800331的博客 216

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

20ZR提高组十联测 Day3

cut 没啥意义吧。就是一个图一定可以分成两个点集,之间的边个数一定可以超过总边数一半。 necklace wyz 神仙吊打 std。举一个 k=2k=2k=2 的栗子。 000 -> 111 001 -> 100 00101 -> 10100 如果将连续的 kkk 个相同数称为合法串,那么合法串是可以任意移动的。而且你可以同时移动初始串和目标串中的合法串,因为操作是可以逆的。所以求一下 SSS 和 TTT 的合法串个数,如果相同那么一定有方法把它们抵消掉,所以都删掉。这个过程可以用一

ylxmf2005's Blog 337

[数论]线性筛——约数个数与约数和

参考博客 参考博客 参考博客 预备知识点: 大于1的数n可以分解质因数: n=p1a1×p2a2×p3a3*…*pka n的约数的个数是(a1+1) * (a2+1) * (a3+1)…(ak+1) 我们先用线性筛来筛出素数 bool mark[maxn]; int prim[maxn]; int cnt; void initial() { cnt=0; for (int i=2 ; i<N ; ++i) { if (!mark[i])

qq_35975367的博客 872

第十课:数学知识(筛法找质数、约数相关、欧拉函数)

质数、约数、欧拉函数

weixin_64197656的博客 549

欧拉筛求约数个数及约数之和

给你一个数字t,代表有t组询问每组询问给你一个数字x,请输出x的约数个数及约数之和t<=1e6x<=1e7。

bz02_2023f2的博客 372

筛法求约数和

#include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath> #include <cstring> #define inf 2147483647 #define N 100...

weixin_30779691的博客 175

欧拉函数,筛法(最大公约数之和——极限版II,UVA 11426)

看到数据范围,大概就知道是O(nlogn)了。 然后一开始尝试用筛法来做,有一些细节没办法处理好,想要处理好至少要O(n^2logn),还不如O(n^2)。 注意啊我的方法是错的,只是讲一下,别看。 我的方法就是ans[j]表示∑gcd(i,j),i 然后s[i]=s[i-1]+ans[i]。 s[n]就是答案。 怎么求ans[j]呢。就是用筛法。 因为 an

xl2015190026的博客 884

线性筛法及扩展

以下代码中的定义: mindiv[i]:i的最小质因子 phi[i]:欧拉函数i的值 mindivq[i]:i的最小质因子的个数 d[i]:i的约数个数 sumd[i]:i的约数和 miu[i]:莫比乌斯函数i的值 inv[i]:i在mod n意义下的乘法逆元标准筛法欧拉筛法,可以保证每个数只被自己最小的质因子筛去,时间复杂度O(n) 两种等价实现 易于理解版:void solve

Clear Dreamer 2530

线性筛法 约数个数

对线性筛法进行修改,就可以在O(n)复杂度内,递推求得n以内所有整数的约数个数。     #include&lt;iostream&gt; using namespace std; const int MaxPrimeNum = 278499, MaxSize = 1000001; int num_prime = 0, MinPrime[MaxSize], MaxPrime[MaxSi...

8rfuz的博客 2134

[线筛五连]线筛素数

模板链接:https://www.luogu.org/problemnew/show/P3383 【模板】线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。 接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数。...

ShadyPi的IT笔记 308
上一篇: [线筛五连]线筛约数个数
下一篇: [数论]莫比乌斯反演入门
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值