Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1k1×p2k2×⋯×pmkm.
Input Specification:
Each input file contains one test case which gives a positive integer N in the range of long int.
Output Specification:
Factor N in the format N =
p1^
k1*
p2^
k2*
…*
pm^
km, where pi's are prime factors of N in increasing order, and the exponent ki is the number of pi -- hence when there is only one pi, ki is 1 and must NOT be printed out.
Sample Input:
97532468
Sample Output:
97532468=2^2*11*17*101*1291
key:
#include <iostream>
#include <cmath>
#define maxn 100001
using namespace std;
long long prime[maxn],num=0; //prime数组用于记录素数
bool panduan(int m) //判断素数
{
int ok=0;
for(int i=2;i<=sqrt(m);i++)
{
if(m%i==0)
{
return 0;
}
}
return 1;
}
void Find_Prime()
{
for(int i=2;i<maxn;i++)
{
if(panduan(i))
{
prime[num++]=i;
}
}
}
int main()
{
Find_Prime();
long long n,t=0;
cin>>n;
cout<<n<<"=";
if(panduan(n)) cout<<n; //如果是素数直接输出(这里把1也直接输出了)
else
while(n!=1)
{
int num=0,ok=0;
while(n%prime[t]==0)
{
ok=1;
num++; //记录次数
n/=prime[t];
}
if(ok)
{
cout<<prime[t];
if(num>1) cout<<"^"<<num;
if(n!=1) cout<<"*";}
t++;
}
return 0;
}