Problem 1075 Blocks of Stones II
排序
代码:
#include <iostream>
#include <string>
#include <set>
#include <cctype>
#include <iomanip>
#include <cmath>
#include <vector>
using namespace std;
bool is_prime(int n)
{
if(n==2)
return true;
int p=1;
for(int i=2;i<=sqrt(n*1.0)&&p==1;i++)
{
if(n%i==0)
{
p=0;
break;
}
}
if(p)
return true;
return false;
}
int min_div(int n)
{
for(int i=2;i<=sqrt(n*1.0);i++)
{
if(n%i==0&&is_prime(i))
return i;
}
return n;
}
int main()
{
int n;
int x;
int pos;
while(cin>>n)
{
for(int i=0;i<n;i++)
{
pos=1;
cin>>x;
while(x!=1)
{
if(pos==1)
{
cout<<min_div(x);
pos++;
}
else
{
cout<<'*'<<min_div(x);
}
x/=min_div(x);
}
cout<<endl;
}
}
}