#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;
}
利用栈和类实现求一个数的所有约数
最新推荐文章于 2024-08-03 08:45:00 发布