输入正整数n(2-100),把n!=1*2*3....n分解成素因子相乘的形式,从小到大输出各个素数(2,3,5...)的指数。
样例输入:
5
样例输出:
样例输入:
5
样例输出:
5!= 3 1 1
package algorithm;
public class JieCheng {
// 判断是否为素数
static boolean isPrime(int n)
{
for(int i =2;i*i<=n;i++)
{
if(n%i==0)
return false;
}
return true;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 素数表
int[] prime = new int[100];
int count = 0;
// 指数表
int n=53;
int[] p = new int[100];
for(int i =0;i<100;i++)
{
p[i]=0;
}
// 构造素数表
for(int i =2; i<=100;i++)
{
if(isPrime(i))
{
prime[count]=i;
count++;
}
}
int maxp=0;
for(int i=1;i<=n;i++)
{
int m = i;
for(int j =0;j<count;j++)
{
while(m%prime[j]==0)
{
p[j]++;
m=m/prime[j];
if(j>maxp)
maxp=j;
}
}
}
for(int i=0;i<=maxp;i++)
{
System.out.print(p[i]+" ");
}
System.out.println();
}
}