【堆栈应用一】一个数divided=几个最小质因数的乘积
2016-03-15 15:33
302 查看
/******************************************堆栈:一个数divided几个质因数(质因数的乘积为N)******************************************/ 1 #include<iostream> #include<stack> #include<cmath> using namespace std; bool Prime(int n);//判断质数 int main() { stack<int> st; stack<int> st2; int n; int item=0; int product=1; int temp; cout<<"please input an integer"<<endl; cin>>n; temp=n; for(int i=n;i>2;i--) { if(Prime(i)==true) st.push(i); } st.push(2); //栈顶是最小的质数 while(product!=temp) { item=st.top(); while(n%item==0) //直到不能再整除此质因数就跳转到下一个质因数 { product*=item; //记录质因数的积,直到等于n n/=item; st2.push(item); } st.pop(); //每用完一个质数都弹出,获取下一个质数 } while(! st2.empty()) { cout<<st2.top()<<" "; //逆序输出 st2.pop(); } return 0; } bool Prime(int n) {//判断n是否是质数 bool isPrime=true; for(int i=sqrt(n);i>1;i--) { isPrime=true; if(n%i==0) {//如果有能被整除的,则不是质数 isPrime=false; } } return isPrime; }
输入2100,输出7 5 5 3 2 2
时间复杂度n+logn
相关文章推荐
- I2C分析及RX8025驱动编写
- 【leetcode】【189】Rotate Array
- RAID简单介绍和Linux如何搭建一个RAID
- 初识Ansible
- PhoneGap&Cordova
- JAVA线程知识点
- 是不是要这样讲
- RGB颜色查询对照表
- 两个有序数组相融合
- 如何将本地项目上传到git的中间仓库和下载到本地及注意点
- POJ 2104 K-th Number 主席树
- Spring 事务中 readOnly 的解释
- Spring 事务
- Spring学习笔记
- mybatis初学(遇到的一系列问题)
- .net操作word-1
- 初始化COM-----------------------AfxOleInit()和::CoInitialize(NULL)区别
- SQL exists和in的区别
- Mysql 远程登陆配置
- [cocos2dx] lua注册回调到c++