题意:给出一系列的数,找出那个最先出现的拥有最大素数因子的数;

hint:注意1的处理

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 20005
using namespace std;
int prime[MAXN];
void Prime()
{
    prime[1]=1;
    for(int i=2; i<MAXN; i++)
        if(prime[i]==0)
        for(int j=2*i; j<MAXN; j=j+i)
            prime[j]=1;
}

int main()
{
    memset(prime, 0, sizeof(prime));
    Prime();
    int n, num, mark, flag;
    while(scanf("%d", &n)!=EOF)
    {
        mark=0;
        flag=1;
        while(n--)
        {
            scanf("%d", &num);
            for(int i=num; i>=2; i--)
            {
                if(prime[i]==0)
                {
                    if(num%i==0)
                    {
                        if(mark<i)
                        {
                            mark=i;
                            flag=num;
                        }
                        break;
                    }
                }
            }
        }
        printf("%d\n", flag);
    }
    return 0;
}

posted on 2011-02-09 16:59  FreeAquar  阅读(140)  评论(0)    收藏  举报