利用栈和类实现求一个数的所有约数
来源:互联网 发布:万网哪些域名可以备案 编辑:程序博客网 时间:2024/05/19 23:17
#include<iostream>#include<cmath>using namespace std;class StackOfIntergers{private:int element[100];int size;public: StackOfIntergers(){size=0;}bool empty() const{return (size==0);}int peek() const{ return element[size-1];}void push(int value){element[size++]=value;} int pop(){return element[--size];}int getSize() const{return size;}};bool prime(int n) //判断一个数是否为素数{for(int i=2;i<=sqrt(n);i++)if(n/i==0)break;if(i>sqrt(n))return true;else return false;}int*primearray(int num) //将小于一个数的所有素数存储在一个数组中{int *p; p=new int[num]; for(int i=2,j=0;i<num;i++)if(prime(i))p[j++]=i;return p;}int main(){StackOfIntergers stack;int number,r,i=0,*q;cout <<"input a number:";cin >> number;q=primearray(number);while(number!=1){if(number%q[i])i++;else{stack.push(q[i]);number/=q[i];i=0;}}while(!stack.empty())cout <<stack.pop()<<endl;return 0;}