02 分解质因子
一、数n的质因子分解
题目描述:
输入一个数n(n<=10^6),将数n分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。
输入 5
输出 5 1
输入 10
输出 2 1 5 1
朴素解法:
首先求出1~n的所有质数,每个质数每个质数的进行去除,要保证n中除尽除完,直到把n除到1为止。
程序实现:
#include<bits/stdc++.h>using namespace std;const int N=1e6;int prime[N],idx;
bool st[N];void init(){for(int i=2;i<N;i++){if(!st[i]) prime[++idx]=i;for(int j=1;prime[j]*i<N;j++){st[prime[j]*i]=1;if(i%prime[j]==0) break;}}
}
int main(){init();int n;cin>>n;if(!st[n]) cout<<n<<" "<<1<<endl;else{for(int i=1;prime[i]<=n&&i<=idx;i++){int p=prime[i];int sum=0;while(n%p==0){sum++;n/=p;}if(sum) cout<<p<<" "<<sum<<endl;}}return 0;
}
优化思路:
其一:n如果除掉了前面的某个质因子,后面不能再被某个质因子的倍数整除了,证明比较简单,使用反证法就可以。
其二:n中最多只含有一个大于的因子。证明通过反证法:如果有两个大于sqrt(n)的因子,那么相乘会大于n,矛盾。证毕
基于上面的两条结论,只要从1~把每个数都除一遍,除尽除完,最后剩下的数如果不为1,这个数就是最大的质因子
代码实现
#include<bits/stdc++.h>
using namespace std;int main(){int n;cin>>n;for(int i=2;i<=n/i;i++){int sum=0;while(n%i==0){sum++;n/=i;}if(sum) cout<<i<<" "<<sum<<endl;}if(n!=1) cout<<n<<" "<<1<<endl;return 0;
}
二、阶乘的质因子分解
题目描述
题目分析:
我们枚举1∼n的所有数,把每一个数的质因子加到一个数组里。
最后输出质因子数量大于0的数。 时间复杂度为O(n^2/ln n)
程序实现:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int prime[N],idx;
bool st[N];void init(){for(int i=2;i<N;i++){if(!st[i]) prime[++idx]=i;for(int j=1;prime[j]*i<N;j++){st[prime[j]*i]=1;if(i%prime[j]==0) break;}}
}
int ans[N]; //ans[i]表示第i个质因子的个数
int main(){init();int n;cin>>n;for(int i=2;i<=n;i++){ //枚举每一个数for(int j=1;prime[j]<=i&&j<=idx;j++){int p=prime[j];int cur=i;while(cur%p==0){ans[j]++;cur/=p;}}}for(int i=1;i<=idx;i++){if(ans[i]) cout<<prime[i]<<" "<<ans[i]<<endl;}return 0;
}
优化思路:
我们不去枚举每个数,而是枚举每个质因子,看下在2~n中每个质因子出现的次数
在1x2x3x4x5x6x......x n-1 x n其中
能够被2整除的数有:
1*2 2*2 3*2....... i*2 其中2*i<=n 个数 i=n/2
能够被整除的数有:
1* 2*
3*
......i*
其中i*
<=n 个数i=n/
...........
在统计被2整除的个数时,相当于把每个数都除了2,剩下的数还有可能被2整除那些数是的数,
的数有n/
个,剩下的数还有可能被2整除,那些数是
的数,
的数有n/
个,............所以2作为因子的个数为
其中
同理3作为因子的个数为:
其中
等等
所以只要枚举每个质数,使用循环在求出该质数作为因子的个数即可,每个质数求解时,
p=,质数的个数为
,因此总的时间复杂度为
*
=
*
=
,即时间复杂度为O(n)
相关文章:
02 分解质因子
一、数n的质因子分解 题目描述: 输入一个数n(n<10^6),将数n分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入 5 输出 5 1 输入 10 输出 2 1 5 1 朴素解法: 首先求出1~n的所有质数…...
科技赋能智慧水利——山海鲸软件水利方案解析
作为山海鲸可视化软件的开发者,我们深感荣幸能为我国智慧水利建设提供强大助力。作为钻研数字孪生领域的开创者,我们希望不仅能为大家带来免费好用,人人都能用起来的数字孪生产品,还希望以其独特的技术优势和创新设计理念…...
C4.5决策树的基本建模流程
C4.5决策树的基本建模流程 作为ID3算法的升级版,C4.5在三个方面对ID3进行了优化: (1)它引入了信息值(information value)的概念来修正信息熵的计算结果,以抑制ID3更偏向于选择具有更多分类水平…...
本科毕业设计过程中应该锻炼的能力 (深度学习方向)
摘要: 本文以本科毕业设计做深度学习方向, 特别是全波形反演为例, 描述学生应在此过程中锻炼的能力. 搭建环境的能力. 包括 Python, PyTorch 等环境的安装.采集数据的能力. 包括 OpenFWI 等数据集.查阅资料的能力. 包括自己主要参考的文献, 以及其它相关文献 (不少于 20 篇). …...
深度学习——pycharm远程连接
目录 远程环境配置本地环境配置(注意看假设!!!这是很多博客里没写的)步骤1步骤2步骤2.1 配置Connection步骤2.2 配置Mappings 步骤3 配置本地项目的远程解释器技巧1 pycharm中远程终端连接技巧2 远程目录技巧3 上传代码文件技巧4 …...
信号量机制解决经典同步互斥问题
生产者 / 消费者问题、读者 / 写者问题和哲学家问题是操作系统的三大经典同步互斥问题。本文将介绍这三个问题的基本特点以及如何用信号量机制进行解决。 在分析这三个问题之前,我们首先需要了解用信号量机制解决同步互斥问题的一般规律: 实现同步与互斥…...
java基础09-==和equals()的区别,附代码举例
和equals()的区别 在Java中,和equals()是两个不同的运算符,它们在比较对象时有着本质的区别。 运算符: 用于比较两个基本数据类型(如int、char等)或两个对象的引用。 当用于比较基本数据类型时,它会比较它们的值。 当…...
qml与C++的交互
qml端使用C对象类型、qml端调用C函数/c端调用qml端函数、qml端发信号-连接C端槽函数、C端发信号-连接qml端函数等。 代码资源下载: https://download.csdn.net/download/TianYanRen111/88779433 若无法下载,直接拷贝以下代码测试即可。 main.cpp #incl…...
LabVIEW电路板插件焊点自动检测系统
LabVIEW电路板插件焊点自动检测系统 介绍了电路板插件焊点的自动检测装置设计。项目的核心是使用LabVIEW软件,开发出一个能够自动检测电路板上桥接、虚焊、漏焊和多锡等焊点缺陷的系统。 系统包括成像单元、机械传动单元和软件处理单元。首先,利用工业相…...
第十一站:多态练习ODU
实现动态切换 ODU.h #pragma once #include <iostream> using namespace std; #define ODU_TYPE_311_FLAG "311" #define ODU_TYPE_335_FLAG "335" enum class ODU_TYPE {ODU_TYPE_311,ODU_TYPE_335,ODU_TYPE_UNKNOW };class ODU{ public:ODU();//发…...
【深度学习】详解利用Matlab和Python中 LSTM 网络实现序列分类
🔗 运行环境:Matlab、Python 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 🔐#### 防伪水印——左手の明天 ####🔐 💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗 💗今天分享Matlab深度学习—— LSTM 网络实现序列分...
Unity 工厂方法模式(实例详解)
文章目录 在Unity中,工厂方法模式是一种创建对象的常用设计模式,它提供了一个接口用于创建对象,而具体的产品类是由子类决定的。这样可以将对象的创建过程与使用过程解耦,使得代码更加灵活和可扩展。 工厂模式的主要优点如下&…...
2024年美赛数学建模思路 - 案例:异常检测
文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…...
一键完成,批量转换HTML为PDF格式的方法,提升办公效率
在当今数字化的时代,HTML和PDF已经成为两种最常用的文件格式。HTML用于网页内容的展示,而PDF则以其高度的可读性和不依赖于平台的特性,成为文档分享和传播的首选格式。然而,在办公环境中,我们经常需要在这两种格式之间…...
【重点问题】攻击面发现及管理
Q1:在使用长亭云图极速版时,是否需要增设白名单扫描节点? 长亭云图极速版高级网络安全产品基于一种理念,即攻击面发现是一个不断变换且需要持续对抗的过程。在理想的情况下,用户应当在所有预置防护设施发挥作用的环境…...
UE4外包团队:国外使用UE4虚幻引擎制作的十个知名游戏
1.俄罗斯方块效果(任天堂 Switch、PlayStation 4、PC、Xbox) 2.耀西的手工世界(任天堂 Switch) 3. Final Fantasy 7 Remake Intergrade (PlayStation, PC) 4.《堡垒之夜》(PC、Nintendo Switch、PlayStation、Xb…...
解决springboot+mybatisplus返回时间格式带T
原因:我service实现类的代码是 Overridepublic Map<String, Object> queryDictPage(Map<String, Object> queryMap) {Map<String,Object> map new HashMap<>();QueryWrapper<Dict> wrapper new QueryWrapper<>(); // …...
纯命令行在Ubuntu中安装qemu的ubuntu虚拟机,成功备忘
信息总体还算完整,有个别软件更新了名字,所以在这备忘一下 1. 验证kvm是否支持 ________________________________________________________________ $ grep vmx /proc/cpuinfo __________________________________________________________________…...
Vue的学习Day1_是什么以及两种风格
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Vue是什么?二、渐进式框架1.渐进式 三、Vue API风格1.选项式 API (Options API)2.组合式 API (Composition API) 四、Vue 开发前的准备 前言 放…...
磁悬浮人工心脏的不良事件分析:美国FDA数据库的启示
引言: 左心室辅助装置(LVAD)是治疗末期难治性心力衰竭(HF)患者的有效手段。磁悬浮人工心脏HeartMate-3(磁悬浮人工心脏)作为第三代LVAD,自2017年获得美国食品药品监督管理局&#x…...
KART-RERANK与MySQL集成:构建企业级智能搜索系统
KART-RERANK与MySQL集成:构建企业级智能搜索系统 你是不是也遇到过这样的问题?自家电商平台或者内容社区里,用户搜“适合夏天穿的轻薄外套”,结果系统返回一堆“冬季加厚羽绒服”或者“春秋季夹克”。用户抱怨搜不准,…...
百川2-13B量化版性能实测:OpenClaw长任务下的Token消耗与稳定性
百川2-13B量化版性能实测:OpenClaw长任务下的Token消耗与稳定性 1. 测试背景与动机 上周在尝试用OpenClaw自动化处理一个包含2000多份PDF的文献库时,遇到了令人头疼的Token消耗问题。原本计划让AI助手完成"读取PDF标题-提取关键词-分类归档"…...
Phi-3-vision-128k-instruct黑马点评项目AI升级:实现菜品图片智能识别与推荐
Phi-3-vision-128k-instruct黑马点评项目AI升级:实现菜品图片智能识别与推荐 1. 引言:餐饮应用的智能化痛点 在餐饮行业数字化浪潮中,"黑马点评"作为一款广受欢迎的美食点评应用,面临着用户需求升级的挑战。传统模式下…...
ComfyUI IPAdapter Plus插件ClipVision模型加载故障排除指南
ComfyUI IPAdapter Plus插件ClipVision模型加载故障排除指南 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 问题诊断:ClipVision模型加载失败的典型症状与成因分析 在ComfyUI工作流中集成…...
告别DAC!用Arduino的PWM信号和双光耦,轻松驱动LM317实现4-20mA隔离输出
用Arduino PWM与双光耦打造高性价比4-20mA隔离输出方案 在工业自动化与物联网设备开发中,4-20mA电流环传输因其抗干扰能力强、传输距离远等优势,成为模拟信号传输的黄金标准。传统方案通常依赖昂贵的DAC芯片实现数字到模拟的转换,而本文将揭…...
SAP CO-PA获利能力分析:关键设置与事务码实战指南
1. SAP CO-PA模块入门:为什么你需要掌握获利能力分析 第一次接触SAP CO-PA模块时,我完全被那些专业术语搞晕了。直到参与了一个零售行业的项目,才真正理解这个模块的价值所在。想象一下,你是一家快消品公司的财务分析师࿰…...
CPython 3.12+新特性深度适配:细粒度GIL释放、Per-Interpreter GIL与扩展模块线程模型重构指南
第一章:CPython 3.12扩展模块开发范式演进总览CPython 3.12 标志着 C 扩展开发进入“安全优先、API 稳定、工具链现代化”的新阶段。官方正式弃用长期存在的 PyEval_InitThreads() 和隐式 GIL 管理惯用法,同时强化了 PyModuleDef 初始化语义与跨版本 ABI…...
零基础快速入门前端蓝桥杯Web应用开发 DOM 核心知识点(适配省赛/国赛高频考点)(可用于备赛蓝桥杯Web应用开发)
DOM 是蓝桥杯 Web 赛道的必考核心,贯穿所有实操编程题,从基础元素获取到复杂交互、性能优化均有覆盖,以下按考点优先级和模块完整梳理,适配历年真题考情。 一、DOM 基础认知与元素获取(所有题的前置基础,1…...
SAP事务代码中文描述变成了英文如何解决
背景是接到用户反馈,事务代码的中文描述突然变成了英文,我检查了用户的参数文件,登录语言是选择的ZH,经过检查发现是新主题权限角色批量维护的时候出现了问题。只需要将权限角色更改成修正即可。用户的菜单页面1、PFCG检查发现权限…...
使用VSCode调试TranslateGemma-27B模型调用
使用VSCode调试TranslateGemma-27B模型调用 1. 准备工作与环境配置 在开始调试TranslateGemma-27B模型之前,我们需要先搭建好开发环境。VSCode作为一款轻量级但功能强大的代码编辑器,提供了丰富的调试功能,特别适合深度学习项目的开发调试。…...
