【HDU 2710】【素数フィルタリング】Max Factor

911 ワード

疲れたら書きたくなくて、直接コードをつけます
#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; }