python质因子分解_质因子分解_个人文章 - SegmentFault 思否
质因子分解的问题就是给定一个n使得n能够分解为多个因子的乘积形式,并且相同因子用指数形式表示;
例如180=2^23^25;
对于这个问题,很好理解,我们的目的就是寻找其因子,通常的方法也就是从0开始枚举,然后通过取模或者整除操作来看是否是我们需要的元素;
具体的思路如下所示:
我们首先建立一个结构体:
struct factor{
int x;
int cnt;
}fac[10];
这里为每一个符合条件的因子创立一个结构体,fac数组是当前该数字所有因子存储数组;
结构体内x代表当前的因子,cnt代表当前因子出现的个数;
这里开10的目的是如果开更大会导致int溢出,并没有什么必要;
接下来就是计算部分;
我们对1~sqrt(n)挨个进行枚举;这里借鉴了寻找判定素数的概念,因为如果k存在,为n的质因子,对于n/k*n来说,其也是n的质因子,我们的目的是寻找最小质因子,所以只需要枚举到sqrt(n)就可以;
接下来要注意理解一个质因子分布的问题;
对于我们枚举到sqrt(n),必然会出现两种情况:
1.所有质因子都在sqrt(n)的枚举范围内;
2.有一个质因子大于sqrt(n),但其余的说有质因子都在sqrt(n)范围内,并且该较大的质因子必为素数;
我们该怎么理解这个问题,第一条很好理解,显然成立,那么第二条必然成立吗?
会不会有两个数字斗大于sqrt(n),并且这两个既可能是合数有可能是素数?
首先,不可能有两个质因子大于sqr(n),这样会导致乘积大于n,所以不符合初始条件;
那么剩下的质因子一定为素数嘛?
如果这个质因子是合数,则说明可以分解,必定可以分为多个较小质因子的乘积,或者多个数和一个素数的乘积;
所以无论那种情况,都是两种情况中的一个;
所以接下来我们通过枚举,对一个质因子猛除,记录他的出现次数,如果有余数,进行下一个数字的枚举猛除;直到到达sqrt(n)边界,如果还是有余数,则说明有第二个条件发生,有个较大的质因子,所以直接记录,因为这个质因子只可能出现一次,如果多次会使得乘积大于n;
大致的判断逻辑如下所示:
for(int i=0;i
if(n%prime[i]==0){
fac[num].x=prime[i];
fac[num].cnt=0;
while(n%prime[i]==0){
fac[num].cnt++;
n/=prime[i];
}
num++;
}
}
if(n!=1){
fac[num].x=n;
fac[num++].cnt=1;
}
python质因子分解_质因子分解_个人文章 - SegmentFault 思否相关推荐
- python经济统计公报_东哥起飞 的动态 - SegmentFault 思否
作者:xiaoyu 微信公众号:Python数据科学 前言 玩过建模的朋友都知道,在建立模型之前有很长的一段特征工程工作要做,而在特征工程的过程中,探索性数据分析又是必不可少的一部分,因为如果我们要对 ...
- python之父去面试-面试题_个人文章 - SegmentFault 思否
1 Spring Bean是什么? 在spring中由Spring创建和管理的对象称为bean, bean有相关的特性,例如懒加载,作用域,生命周期这些. 懒加载就是延迟加载,启动的时候,会创建所有对 ...
- python程序执行完后重头开始做烧饼_下塘烧饼 的动态 - SegmentFault 思否
一.背景 java8的垃圾回收器一般推荐的是parNew+CMS,分别针对新生代和老年代的垃圾回收器.实际生产上,有时需要分析GC日志,检查GC回收有没有引起过多的系统暂停,特别是full GC. 二 ...
- img summernote 加类_控制好情绪 的动态 - SegmentFault 思否
前言因为工作中经常用到这些方法,所有便把这些方法进行了总结. JavaScript 1. type 类型判断isString (o) { //是否字符串 return Object.prototype ...
- tr闭包_蓝色的梦 的动态 - SegmentFault 思否
图标是页面中非常友好的附加物,许多网站都会使用各种图标来美化页面样式,给用户提供更好的指引.本文将会和大家一起学习页面图标的发展史,以及当前的最优解决方案. 传统图标 字体图标 SVG 图标 传统图标 ...
- css 高度塌陷_高度塌陷问题_前端技术文章 - SegmentFault 思否
1. 高度塌陷 在文档流中,父元素的高度默认被子元素撑开,也就是说子元素多高,父元素就多高.但是, 当为子元素设置浮动后,子元素会完全脱离文档流.此时,将会导致子元素无法撑起父元素的高度,导致父元素的 ...
- java - websocket配合spring-security使用token认证_个人文章 - SegmentFault 思否
使用框架介绍 spring boot 1.4.3.RELEASE spring websocket 4.3.5.RELEASE spring security 4.1.3.RELEASE sockjs ...
- node.js - Nodejs 分布式事务_个人文章 - SegmentFault 思否
事务是恢复和并发控制的基本单位,保证 ACID:原子性.一致性.隔离性.持久性. 对于全是异步的 Nodejs 而言, 并不适合做事务操作: 代码书写上: try ... catch ... 是写给人 ...
- java9 gc log参数迁移_个人文章 - SegmentFault 思否
序 本文主要研究一下java9 gc log参数的迁移. 统一JVM及GC的Logging java9引进了一个统一的日志框架,对gc log的输出进行了统一的配置. 相关JEP(JDK Enhanc ...
最新文章
- IOS 内存管理小结
- Android系统编译so库提示error undefined reference to '__android_log_print问题的解决
- 无监督学习与监督学习_有监督与无监督学习
- Python字符串格式化--formate()的应用
- 操作系统—死锁的避免
- Noi2016 循环之美
- Pwn2Own黑客大赛战况:iPhone 20秒被黑
- CentOS 通过yum来升级php到php5.6
- C++虚复制构造函数,设置Clone()方法返回基类指针,并设置为虚函数
- 样式和多级编号的关系
- JavaSE——多线程
- 某教程学习笔记(一):1、windows基础
- 基于物联网的防盗报警器设计与实现
- Windows10启动缓慢的原因以及解决方法
- VMware虚拟机快速复制多个Linux系统
- C# 获取汉字的拼音首字母(转)
- python做flash帧动画_[练习]利用CSS steps 实现逐帧动画
- 商业模式与盈利模式的区别
- PDF文件可以修改吗,怎么修改PDF文件内容
- 什么是BGP多线,与普通双线的区别
热门文章
- 在线下单系统think php,昱杰订单管理系统(ThinkPHP版) v19.0
- vue中事件监听watch
- Java中输入一个整数n,实现n的阶乘
- 经典语录(确实经典)
- 白天建筑师,晚上CG艺术家,他将建筑的华丽发挥极致
- 蓝桥杯学习03-共阳数码管的静态显示
- 台式计算机wifi老掉线,电脑连接WiFi容易断线或速度慢怎么回事 教你怎么解决
- 升级Unity2018.3.2f1出现PrecompiledAssemblyException: Multiple precompiled assemblies with the same name
- “我靠这4个项目,拿到了年薪30万+的大厂Offer”
- JavaScript 小案例 弹幕