主题:[讨论]请大家帮忙看一个分解质因数的程序,帮忙找一下错误
设计一个函数用来找出某个数的所有质因数,并实现从大到小输出
例如:30
结果:5 3 2
//stack.h
#ifndef STACK_H
#define STACK_H
#include<iostream>
#include<stack>
using namespace std;
stack<int> reclipt (int n);
int pan(int i);
#endif
//eclipt.cpp
#include"STACK.h"
int pan(int i) //获得质数,如2,3,5,7,11,13……
{if(i==2)
return 1;
for(int j=2;j<i;j++)
{if(i%j==0)
return 0;
}
return 1;
}
stack<int> reclipt (int n)//分解出质因数
{stack<int> sta;
int temp=n;
int i=2;
while(i>=temp)
{while(pan(i))
i++;
if(temp%i==0)
{
temp=temp/i;
sta.push(i);
}
else
{
i++;
}
}
sta.push(temp);
return sta;
}
//main.cpp
#include"stack.h"
int main() //主函数部分
{
stack<int> st;
int m=25;
st=reclipt(m);
while(st.empty() )
{ cout<<st.top()<<" ";
st.pop ();
}
return 0;
}
例如:30
结果:5 3 2
//stack.h
#ifndef STACK_H
#define STACK_H
#include<iostream>
#include<stack>
using namespace std;
stack<int> reclipt (int n);
int pan(int i);
#endif
//eclipt.cpp
#include"STACK.h"
int pan(int i) //获得质数,如2,3,5,7,11,13……
{if(i==2)
return 1;
for(int j=2;j<i;j++)
{if(i%j==0)
return 0;
}
return 1;
}
stack<int> reclipt (int n)//分解出质因数
{stack<int> sta;
int temp=n;
int i=2;
while(i>=temp)
{while(pan(i))
i++;
if(temp%i==0)
{
temp=temp/i;
sta.push(i);
}
else
{
i++;
}
}
sta.push(temp);
return sta;
}
//main.cpp
#include"stack.h"
int main() //主函数部分
{
stack<int> st;
int m=25;
st=reclipt(m);
while(st.empty() )
{ cout<<st.top()<<" ";
st.pop ();
}
return 0;
}