数学算法:求一个数的质因子
两种方法,第一种是将所有的素数筛选出来,第二种直接循环就行了(第二种更加的高效)。
第一种方法其实就是先将素数筛选出来然后再计算,第二种是直接计算。
第一种的代码
#include<bits/stdc++.h> using namespace std; const int Max = 1e7+7; bool prim[Max]; vector <int> ve; //素数筛选 void pre_prim() { for(int i=2;i*i<=Max;i++) { if(!prim[i]) { ve.push_back(i); for(int j=i;j<Max;j+=i) prim[j] = true; } } } int main() { pre_prim(); long long n; while(~scanf("%lld",&n)) { vector<int>::iterator iter; for(iter=ve.begin();iter!=ve.end();iter++) { if(n%*iter == 0) { while(n%*iter == 0) { printf("%d ",*iter); n /= *iter; } } } if(n!=1) printf("%lld",n); printf("\n"); } }
第二种方法的代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n; while(~scanf("%lld",&n)) { for(int i=2;i*i<=n;i++) { if(n%i == 0) { while(n%i == 0) { printf("%d ",i); n/=i; } } } if(n!=1) printf("%lld",n); printf("\n"); } return 0; }
分类:
数学基础-基本技巧
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库