HDU 1164 Eddy's research I

时间:2024-01-12 16:55:02

题目链接

题意 : 给你一个数,让你用它的素数质因子表示出来。

思路 : 先打一下表,因为会有重复的质因子,所以从大到小开始找,并且找到一个之后不能就接着往下找,要再找一遍这个数。

 #include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream> using namespace std ; int IsPrime[] ; void sett()
{
int i,j;
for(i = ; i <= ; ++i)
IsPrime[i] = true;
IsPrime[] = IsPrime[] = false ;
for(i = ; i <= ; ++i)
{
if(IsPrime[i])
{
for(j = *i ; j <= ; j += i)
IsPrime[j]=false;
}
}
}
int main()
{
int n ;
int a[] ;
sett() ;
while(scanf("%d",&n)!= EOF)
{
int cnt = ;
for(int i = ; i > ; i--)
{
if(n%i == && IsPrime[i])
{
a[cnt++] = i ;
n /= i ;
i++ ;
}
}
printf("%d",a[cnt-]) ;
for(int i = cnt- ; i >= ; i--)
{
printf("*%d",a[i]) ;
}
printf("\n") ;
}
return ;
}