【HDU 2710】【素数フィルタリング】Max Factor
疲れたら書きたくなくて、直接コードをつけます
#include <stdio.h>
#include <math.h>
#include <cstring>
#include <algorithm>
using namespace std;
int a[200005],b[200005];
bool f(int x)
{
int flag=1,i;
for(i=2;i<=(int)sqrt((double)x);i++)
if(x%i==0)
{
flag=0;break;
}
if(flag) return 1;
else return 0;
}
int main()
{
int n,i,j,k,m,max,maxn;
while(~scanf("%d",&n))
{
k=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(f(a[i])==1)b[k++]=a[i];
else
{
for(j=2;j<=a[i]/2;j++)
if(a[i]%j==0&&f(j)==1) b[k]=j;
k++;
}
}
max=b[0];
maxn=0;
for(i=1;i<k;i++)
if(max<b[i])
{
max=b[i];maxn=i;
}
printf("%d
",a[maxn]);
}
return 0;
}