c语言分解质因数代码

算术基本定理:任何一个大于1的正整数都能分解为有限个质数的幂的乘积 :N=pc11pc22⋅⋅⋅pcmm 其中都是ci正整数,pi都是质数,且满足 p1<p2<⋅⋅⋅<pm
n的所有正约数集合{pbii},其中0⩽bi⩽ci

原理:试除法
枚举2-n中的所有质数,如果是i的n的因子,就把n中的i因子除干净
其中枚举的i一定是质数:

原因:
当枚举到i的时候,已经把2 ~ (i - 1)中的质因子都除掉了,当if(n % i == 0)成立的时候,n中已经不包含任何2 ~ (i - 1)的质因子,又因为n是i的倍数,所以i中也不包含2 ~ (i - 1)的因子,所以此时i一定是质数
另一种证明: 一个数除了1之外的最小因数一定是质数(反证法:假设最小因数是合数,那么这个合数的因数也一定是原本这个数的因数,那么就不是最小因数,矛盾),由于是从小到大枚举所有的因数i,且如果i是n的因数的话就把i除干净,所以每次枚举的i都是n的最小因数,所以i就是质数
反证法证明: 如果此时i是合数的话,i就可以分解成有限个质数的幂的乘积,而这些质数一定比i小且都是n的因数,但是比i小的数在之前就应该被除干净了,矛盾,所以i一定是质数
- 优化
原理:
n中最多只包含一个大于n√

的质因子
反证法:
如果有两个,那么乘积就 > n矛盾

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值