下面给出一个求解一个数因数分解的算法:
#include <iostream>
#include<cmath>
using namespace std;
bool isPrime(int n)
{
int i;//这里判断素数是有些问题的 1会判断是素数 但是不影响结果的
if(n==2) return true;
for(i=2;i<sqrt(n)+1;i++)
{
if(n%i==0) return false;
}
return true;
}
int *divp(int m,int &k)
{
int *res = new int[100];
for(int i=2;i<m;i++)
{
if(isPrime(i))
{
while(m%i==0)
{
m = m/i;
res[k] = i;
k++;
if(isPrime(m))
{
res[k] = m;
break;
}
}
}
}
return res;
}
int main()
{
int T,m,k;
int *p;
cin>>T;
while(T--)
{
k = 0;
cin>>m;
if(isPrime(m))
cout<<m<<endl;
else
{
p = divp(m,k);
for(int i=0;i<k;i++)
cout<<p[i]<<"*";
cout<<p[k]<<endl;
}
}
return 0;
}