质因数分解的最简单方法(最好理解的方法)

对于整数 m,其质因数分解过程如下
步骤:
(1)生成 2~sqrt(m) 内的所有质数的质数表。(线性筛)(小于m的质数会存储在 prime[] 数组中,知道作用即可,改日分享)
(2)对于质数 pi,若m%pi = 0,while 循环执行,数组记录因子,记录因子个数加一,m = m/pi,反复执行1该步骤,直到 m%pi != 0。
(3)若 m = 1,则质因数分解结束。

代码实现:

#include<stdio.h>
int a[100010];//存储质因数
int s[100010] = {0};//存储质因数的个数 int prime[10000005],judge[10000005];//把可以求的范围开到最大
int Prime(int m)//线性筛
{int num = 0;for(int i = 2;i < m;i++){if(!judge[i]) prime[num++] = i;for(int j = 0;j < num && prime[j]*i < m;j++){judge[i*prime[j]] = 1;if(i%prime[j] == 0) break;}}
//  for(int i = 0;i < num;i++) printf("%d\n",prime[i]);return num;//返回小于 m 的质数的个数
}
int fenjie(int m)
{int num = 0;  //存储质因数的个数 int cnt = Prime(m);//求小于 m 的素数,存到数组 prime[] 中 for(int i = 0;i < cnt;i++){if(m%prime[i] == 0){    //如果能除尽while(m%prime[i] == 0){    //能除尽就一直除a[num] = prime[i];    //先存储s[num]++;    //计数再++m /= prime[i];}num++;}if(m == 1) break;   //除完到 1 结束 }if(m != 1){        //当 m 为质数的时候 a[num] = m;s[num] = 1;}return num;   //返回所有质因数的个数
}
int main()
{int m;scanf("%d",&m);int cnt = fenjie(m);for(int i = 0;i < cnt;i++){if(i == 0) printf("%d = ",m);if(i != 0) printf(" * ");printf("%d",a[i]);printf("^%d",s[i]);}  return 0;
}

这里可能还有求质数的方法看不懂,改日博客分享,知道意思就是将所有的质数存储在 prime[] 数组中即可。

数论-质因数分解(最基础方法)相关推荐

  1. java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...

    点击上方"蓝字"关注我们了解更多算法思路01题目 题目来源:洛谷OJ 题目链接: https://www.luogu.com.cn/ 题目描述 已知正整数n是两个不同的质数的乘积, ...

  2. 数论 质因数分解 试除法

    AcWing 867. 分解质因数 由于我是我们队的数论选手,寒假刷题会略偏向于数论方面QWQ,在此记录 2021-01-11 刷题打卡~ AC代码: #include <bits/stdc++ ...

  3. Ch3101-阶乘分解【数论,质因数分解】

    正题 题目链接:http://contest-hunter.org:83/contest/0x30%E3%80%8C%E6%95%B0%E5%AD%A6%E7%9F%A5%E8%AF%86%E3%80 ...

  4. python【蓝桥杯vip练习题库】BASIC-16分解质因数(数论 质数分解)

    试题 基础练习 分解质因数 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 求出区间[a,b]中所有整数的质因数分解. 输入格式 输入两个整数a,b. 输出格式 每行输出一个数的分解 ...

  5. 数学概念——J - 数论,质因数分解

    J - 数论,质因数分解 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  6. 素数判定质因数分解(数论)(Miller Rabin)(Pollard Rho)

    太玄学了! 我真的被概率的魅力折服了.此前我认为1便是1,0.9999999999-便是0.9999999999-. 但实际上它们有着千丝万缕的关系. 试想,如果一件事发生的概率是0.99999999 ...

  7. NOIP模拟 整数划分(数论,质因数分解,状压DP)

    这道题竟然暴力能拿到90分,大佬orzorzorz%%%%%%%%%%% --------------------------分割线(下面是正解)--------------------------- ...

  8. 求一个数的所有因数+质因数分解【数论】

    先附上所有因数的求法: 我的做法:是今天误打误撞写出来的: http://exam.upc.edu.cn/problem.php?id=5062 然后,我上网找居然没有人写一个高效一点的,我这个做法其 ...

  9. C++实现质因数分解

    质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数):否则称为合数.根据算术基本定理,每一个比1大的整数,要 ...

最新文章

  1. 图论 ---- F. Graph Traveler 记忆化搜索 + 思维预处理(数论同余恒等式)
  2. rocketmq 重复消费_RocketMQ的十二个特性,你都知道吗「下」
  3. Redis的Errorlog或者启动日志(错误日志)的配置
  4. String.equals用法注意
  5. [ES6] 细化ES6之 -- Promise对象
  6. Java高并发编程详解系列-线程上下文设计模式及ThreadLocal详解
  7. docker_3 docker 部署练习
  8. [读码时间] 跟随鼠标移动(大图展示)
  9. win11还原win10磁贴方法ExplorerPatcher,替代Start 11、StartALLBack(开源免费~)
  10. 普通人也可以制作App
  11. windows11右键一直转圈问题解决方法
  12. Java源码阅读--任重而道远(lang)
  13. 一群在全球顶会崭露头角的阿里新生代白帽:能查漏洞还会焊接
  14. 理论篇3:深度学习之----Momentum优化器(2)
  15. sql bigint 转varchar_SQL 优化案例一则
  16. ssm个人微空间图片相册共享系统
  17. 迅雷thunder://地址与普通url地址转换
  18. nas 群晖 git 项目创建步骤
  19. Kerberos认证介绍及黄金票据和白银票据
  20. 硬盘为raw格式后的修复

热门文章

  1. ubuntu18.04 | soundfile安装报错与解决
  2. access2007 mysql_Access2007基础教程:开始使用Access 2007
  3. altera fpga 型号说明_Actel与Altera、Xilinx的FPGA选型对比参考
  4. [spm操作] 什么是mask,如何做mask(未完)
  5. 机考怎么作弊_电脑考试怎么作弊
  6. Error LNK2005:_main already defined in test.obj
  7. Windows 美化
  8. Jekins构建触发器Build Triggers:定时构建配置
  9. 【技术美术】千人千面如何炼成 技术讲解捏脸系统设计原理
  10. 如何使用stc12c5a60s2控制蜂鸣器