您的位置:首页 > 其它

HDU 1164 Eddy's research I

2014-05-08 20:49 295 查看
题目链接

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

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

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>

using namespace std ;

int IsPrime[65536] ;

void sett()
{
int i,j;
for(i = 0 ; i <= 65535 ; ++i)
IsPrime[i] = true;
IsPrime[0] = IsPrime[1] = false ;
for(i = 2 ; i <= 65535 ; ++i)
{
if(IsPrime[i])
{
for(j = 2*i ; j <= 65535 ; j += i)
IsPrime[j]=false;
}
}
}
int main()
{
int n ;
int a[65536] ;
sett() ;
while(scanf("%d",&n)!= EOF)
{
int cnt = 1 ;
for(int i = 65535 ; i > 1 ; i--)
{
if(n%i == 0 && IsPrime[i])
{
a[cnt++] = i ;
n /= i ;
i++ ;
}
}
printf("%d",a[cnt-1]) ;
for(int i = cnt-2 ; i >= 1; i--)
{
printf("*%d",a[i]) ;
}
printf("\n") ;
}
return 0 ;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: