您的位置:首页 > 其它

poj3048--Max Factor(最大素数因子)

2012-09-20 17:56 323 查看
通过素数筛选,加输入时判断,效率不是很高

View Code

//Accepted    212K    204MS    C++    967B
#include <cstdio>
#include <memory.h>
#include <algorithm>
using namespace std;
const int MAXN = 5001, MAXM = 20001,MAXPRIME=2262;
bool is_prime[MAXM];
int prime[MAXPRIME];
int ans[MAXN];
void init_prime(void)
{
int i, j;
fill(is_prime, is_prime + MAXM, true);
for(is_prime[1] = false, i = 2; i * i <= MAXM; ++i)
{
if(is_prime[i])
{
for(j = i + i; j <= MAXM; j += i)
is_prime[j] = false;
}
}
}
void get_prime(void)
{
int len = 0;
for(int i=2;i<MAXM;i++)
if(is_prime[i])
prime[len++] = i;
}
int main(void)
{
init_prime();
get_prime();
int t,maxx,i,n,j,result;
while(scanf("%d",&n)==1)
{
maxx = -1;
for(i=0;i<n;i++)
{
scanf("%d",&ans[i]);
t = 1;
for(j=0;j<MAXPRIME;j++)
{
if(prime[j] > ans[i]) break;
if(ans[i]%prime[j] == 0) t = j;
}
if(maxx < prime[t])
{
maxx = prime[t];
result = ans[i];
}
}
printf("%d\n",result);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: