约数定理(约数个数定理,约束和定理)

数论 --- 约数和定理公式推导、最大公约数、欧几里得算法 和试除法判断一个数是不是质数是一个道理从小到大枚举所有的约数,如果当前数能够整除这个数的话,说明这个数就是当前数的约数优化,与试除法判断质数是一样的如果 d 是 n 的约数,n / d 也一定能整除 n,一个数的约数也是成对出现的,在枚举的时候可以只枚举较小的那个约数,较大的那个可以直接计算,只需要满足 d ≤ n / d,d ≤ √ n 就可以了时间复杂度为 O( n × √ a ),100 × √ 2 × 10^9,4 w^2 = 1.6 × 10^9 < √ 2 × 10^9 < 5w = 2.5 阅读详情
AI摘要

本文介绍了约数个数定理和约数和定理,通过分解质因数的方式,推导出计算任意正整数的约数个数及所有约数之和的方法,并给出了具体的例子。

约数个数定理:

对于一个大于1正整数n可以分解质因数:
则n的正约数的个数就是
。
其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。

定理简证:

首先同上,n可以分解质因数:n=p1^a1×p2^a2×p3^a3*…*pk^ak,
由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1 ,共(a1+1)个;同理p2^a2的约数有(a2+1)个......pk^ak的约数有(ak+1)个。
故根据乘法原理:n的约数的个数就是(a1+1)(a2+1)(a3+1)…(ak+1)。

例题:

例题:正整数378000共有多少个 正约数?
解:将378000 分解质因数378000=2^4×3^3×5^3×7^1
由约数个数定理可知378000共有正约数(4+1)×(3+1)×(3+1)×(1+1)=160个。

约数和定理:

对于一个大于1正整数n可以 分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,
则由 约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个,
那么n的(a₁+1)(a₂+1)(a₃+1)…(ak+1)个正约数的和为
f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)

定理证明:

证明:若n可以 分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,
可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1
…
同理可知,pk^ak的约数有:pk^0, pk^1, pk^2......pk^ak ;
实际上n的约数是在p1^a1、p2^a2、...、pk^ak每一个的约数中分别挑一个相乘得来,
可知共有(a₁+1)(a₂+1)(a₃+1)…(ak+1)种挑法,即约数的个数。
由 乘法原理可知它们的和为
f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)

例题:

例题:正整数360的所有正约数的和是多少?
解:将360分解质因数可得
360=2^3*3^2*5^1
由约数和定理可知,360所有正约数的和为
(2^0+2^1+2^2+2^3)×(3^0+3^1+3^2)×(5^0+5^1)=(1+2+4+8)(1+3+9)(1+5)=15×13×6=1170
可知360的约数有1、2、3、4、5、6、8、9、10、12、15、18、
20、24、30、36、40、45、60、72、90、120、180、360;则它们的和为
1+2+3+4+5+6+8+9+10+12+15+18+20+24+30+36+40+45+60+72+90+120+180+360=1170

所有因子个数τ(n)与所有因子的和σ(n)都是乘(积)性函数。

定义1:因子和函数σ定义为整数n的所有正因子之和,记为σ(n)。

定义2:因子个数函数τ定义为正整数n的所有正因子个数,记为τ(n)。


定理1:设p是一个素数,a是一个正整数,那么

                                σ(n)=1+p+p^2+……+p^a=【p^(a+1)-1】/(p-1)

                                τ(n)=a+1

定理2:设正整数n有素因子分解 n =(p1^α1)*(p2^α2)*(p3^α3)* ....... *(pk^αk),那么

             σ(n)=【(p1^α1)-1】/(p1-1) * 【(p2^α2)-1】/(p2-1) * .....  *【(pk^αk)-1】/(pk-1)

             τ(n)=(α1+1)*(α2+1)*(α3+1)*......*(αk+1)

求因子个数:

int prime[maxn],nprime;  
int vis[maxn];  
  
void getprime(){
    nprime = 0;
    memset(vis,0,sizeof(vis));
    for(int i = 2; i <= 450; i++){
        int t = 450/i;
        for(int j = 2; j <=t; j++)
            vis[i*j] = 1;
    }
    for(int i = 2; i <= 450; i++){
        if(!vis[i])
            prime[nprime++] = i;
    }
}
  
int factor_count(int n){  
    int ans = 1,sum;  
    int k = sqrt(n*1.0);  
    for(int i = 0; prime[i] < k; i++){  
        if(n % prime[i] == 0){  
            sum = 0;  
            while(n % prime[i] == 0){  
                sum++;  
                n /= prime[i];  
            }  
            ans *= (a+1);  
        }  
    }  
    if(n > 1)  
        ans *= 2;  
    return ans;  
}  



求因子和:

int prime[maxn],nprime;
int vis[maxn];

void getprime(){
    nprime = 0;
    memset(vis,0,sizeof(vis));
    for(int i = 2; i <= 450; i++){
        int t = 450/i;
        for(int j = 2; j <=t; j++)
            vis[i*j] = 1;
    }
    for(int i = 2; i <= 450; i++){
        if(!vis[i])
            prime[nprime++] = i;
    }
}

int pow_mod(int a,int n,int MOD){
    int ans = 1;
    while(n){
        if(n&1)
            ans = (ans*a)%MOD;
        n >>= 1;
        a = (a*a)%MOD;
    }
    return ans;
}

int factor_sum(int n){
    int ans = 1,sum;
    int k = sqrt(n*1.0);
    for(int i = 0; prime[i] < k; i++){
        if(n % prime[i] == 0){
            sum = 0;
            while(n%prime[i] == 0){
                sum++;
                n /= prime[i];
            }
            ans *= (pow_mod(prime[i],sum+1,MOD)-1)/(prime[i]-1);
        }
    }
    if(n > 1)
        ans *= ans(n*n-1)/(n-1);
    return ans;
}


约数的个数 题目描述:输入n个整数,依次输出每个数的约数的个数。输入描述:输入的第一行为N,即数组的个数(N&lt;=1000),接下来的1行包括N个整数,其中每个数的范围为(1&lt;=Num&lt;=1000000000),当N=0时输入结束。输出描述:可能有多组输入数据,对于每组输入数据,输出N行,其中每一行对应上面的一个数的约数的个数。分析:如何求一个数的约数个数,常规的就是从1- n(表示这个数本身... 阅读详情

相关推荐

[蓝桥杯]第十一届决赛B组试题解析_试题 历届真题 补给【第十一届】【决赛】【b组

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。我先来介绍一下这些东西怎么用,文末抱走。这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。最近我才对这些路线做了一下新的更新,知识体系更全面了。

2401_84139624的博客 671

唯一分解定理,约数个数定理,约数和定理

唯一分解定理,约数个数定理,约数和定理

zjy200646的博客 1615

【水下小目标检测】SWIPENet与样本重加权:应对模糊与噪声的深度学习策略

本文深入探讨了水下小目标检测的挑战与解决方案,重点介绍了SWIPENet网络架构与IMA样本重加权算法。通过空洞卷积模块、特征金字塔重构和多尺度预测机制,SWIPENet有效提升了模糊目标的检测精度。结合Invert Multi-Class Adaboost算法,系统性地解决了水下环境中的样本不均衡问题,在URPC数据集上实现了48.8%的mAP,特别适合海洋生物检测等应用场景。

weixin_29057163的博客 343

约数的一些定理——数论

算术基本定理:   又称为正整数的唯一分解定理,即:每个大于1的自然数,要么本身就是质数,要么可以写为2个或以上的质数的积,而且这些质因子按大小排列之后,写法仅有一种方式。   公式:A=(p1^k1) * (p2^k2) * (p3^k3) * …*(pn^kn) 其中pi均为素数。 约数和定理:   对于已经分解的整数 A=(p1^k1) * (p2^k2) * (p3^k3) * …*(...

学而不思则忘 1773

45个经典Linux面试题(非常详细)零基础入门到精通,收藏这一篇就够了

(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。$ chmod 751 file 给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限。linux命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件。

小陈的博客 2069

【入门篇】第五章 第一次与 AI Agent 交互

本文介绍了OpenClaw中最基本的用户与AI Agent交互方式,剖析了Agent和Gateway两个核心组件的作用,通过简单示例展示了从用户请求到结果返回的完整执行流程,说明了最小交互过程对验证系统可用性的重要意义,为后续学习复杂任务执行机制奠定基础。

lanyv的博客 512

约数个数定理(求解因数的个数)

整数的唯一分解定理 对于一个大于1正整数n可以分解质因数: 约数个数定理 则n的正约数的个数就是 。 其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。 定理简证 编辑 首先同上,n可以分解质因数:n=p1^a1×p2^a2×p3^a3*…*pk^ak, 由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1 ,共(a1+1)个...

点点滴滴 4907

别再只会用QTcpSocket了!手把手教你用QSslSocket为你的Qt网络应用加上SSL/TLS加密(附完整代码示例)

本文详细介绍了如何将Qt网络应用从QTcpSocket迁移到QSslSocket,实现SSL/TLS加密传输。通过对比API差异、解析核心机制和提供完整代码示例,帮助开发者快速掌握安全网络编程技巧,有效防范数据窃听和中间人攻击等安全风险。

weixin_30654583的博客 400

约数个数定理、约数和定理简单证明

约数个数定理、约数和定理简单证明

良月澪二的博客 3124

YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法: 1️⃣ 加入。添加后如下:2️⃣:加入基于的。利用改进模块,减少通道冗余。改进代码如下:首先添加如下代码让加入,并重命名为 再添加如

Limiiiing的博客 3871

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box。

成长需要沉淀。 397

约数个数定理和约数和定理

约数个数定理 对于如何快速求一个数内有多少个数是他的约数,有一种公式 假设对于 X 他的素数约数为 p1,p2,p3...pn X = (p1^a1) * (p2^a2)*.......(pn^an) 因为 p1,p2,p3...pn都是素数因数,我们可以认为他们是组成 X 最下的一个因子部分,那么我们通过多次选择这些素数相乘不就可以得出全部的约数了吗。 那么根据排列组合思想 p1 选 ...

qq_40924940的博客 2996

一站式讲解Wireshark网络抓包分析的若干场景、过滤条件及分析方法

本文详细讲解常用的抓包工具、抓包分析的网络场景、分析抓包时的多种过滤条件以及如何结合常用的协议去分析排查问题,给大家提供一个借鉴或参考。

dvlinker的技术专栏 5万+

约数个数定理、约数和定理

小胡同的诗 818

从0到1:用Claude 3.7十日拿下教育部课题申报书(附可修改LaTeX模板)

🟣"作为教育部人文社科项目评审专家,请根据近三年立项数据分析,为[您的学科方向]领域推荐5个具有创新性且符合'十四五'规划的重点选题,要求选题体现交叉学科特征,并标注潜在理论突破点"🟣"根据前期研究基础,创建包含4个研究模块、12个关键节点的三维技术路线图,要求体现实验仿真-实证研究-理论建模的螺旋递进关系,并标注每个节点的预期成果形态"🟣"现在切换至教育部学科评审组组长模式,从选题价值、创新程度、研究可行性三个维度对本申报书进行盲审,生成包含9个扣分风险点的诊断报告及修改优先级排序"

智能AI让学术科研更容易 543

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

约数个数定理&约数和定理

1、如果我们要求一个数的所有因数的个数会怎么去求呢? 首先想到最简单的方法就是暴力求解就可以。当然数据小、或者测试数据少就很简单就可以过了。 2、如果求一个区间内的数的所有因数的个数呢?或者求一个区间内的数的因数最大的数以及最大的因数(正因数)的个数? 这样的话,数据大一些,组数多一些,可能就要Tle,所以可以想到用唯一分解定理,但是那是适用于分解...

weixin_30656145的博客 112

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

约数的个数c++(约数定理)

约数的个数(约数定理)

weixin_48649450的博客 1899

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

关于约数定理

套用百度的话: 对于一个大于1正整数n可以分解质因数:   则n的正约数的个数就是    。 其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。 用这个定理求一个数的约数个数是非常快的,贴出一道训练题目: hdu 1492 -求约数的个数 贴出代码: //约数定理的 #include #include #includ

ruangongshi的专栏 918

蓝桥备赛第三周 倍增+贪心+素数+约数

文章目录0X06倍增天才ACM(有空再做)0X07贪心防晒将乳液按SPF从大到小,牛按minSPF从大到小排序牛客有个题解都从小到大也过了原理畜栏预定~~按结束时间从小到大排~~按开始时间排,这样才是模拟建一个数组表示畜栏,存放改数组当前的牛数据太大可能会过不了,可以换成堆,或者用queue来模拟畜栏位另外sort可以不写cmp而把大小比较的代码写到结构体里,和map与pair那时一样雷达设备问题转化:每个岛(建筑物),在x轴上有个能检测到它的区间----->给定N个区间,在x轴上放n个点,让每个区间

weixin_44382711的博客 1527

约数定理(two)

筛约数个数和 理论基础: 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是质数,t...

weixin_30617797的博客 193

第十三届蓝桥杯javac组决赛准备

第十三届蓝桥杯javac组决赛

qq_55131641的博客 773

【算法】数论基础——约数个数定理、约数和定理 python

可以借助唯一分解定理和约数个数定理解决本题

查理零世的博客 2473

【数论】最大公约数、约数的个数与约数之和定理

蓝桥杯数论,这是计划的一部分

qq_62839589的博客 2732

约数个数定理

约数个数定理 定理 对于一个大于1的正整数n可以分解质因数:n=∏i=1kpiαi=p1α1∗p2α2⋯pkαkn=\prod \limits _{i=1}^{k}p_i^{\alpha_i}=p_1^{\alpha _1}*p_2^{\alpha _2}\cdots p_k^{\alpha _k}n=i=1∏k​piαi​​=p1α1​​∗p2α2​​⋯pkαk​​。则n的正约数的个数就是f(n)=∏i=1k(αi+1)=(α1+1)(α2+1)⋯(αk+1)\prod \limits _{i=1}^{k

qq_45832461的博客 2250
上一篇: BestCoder Round #52 (div.2)(hdu 5417,hdu 5418)
下一篇: POJ 2992 Divisors(约数定理)
yphacker
博客等级 码龄12年 199粉丝 540原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值