链接:http://acm.hdu.edu.cn/showproblem.php?pid=2710
这道题有点问题,,,是多组数据,要用while(cin),,或者whlie(scanf("")!=EOF)
另,要把1当成素数处理.......
#include <iostream>
using namespace std;
bool prime[20005];
void isprime(void) //素数筛选法
{
int i;
int j;
for(i=1;i<20005;i++)
prime[i]=1;
for (i=3;i<20005;i++)
{
if(i%2==0)
prime[i]=0;
}
for(i=3;i<20005;i++)
{
j=2;
if(prime[i])
while(i*j<20005)
{
prime[i*j]=0;
j++;
}
}
}
int mfactor(int m) //返回m最大的素因子
{
int i;
int ans;
for (i=1;i<=m;i++) //注意是"<="
{
if(m%i==0&&prime[i])
ans=i;
}
return ans;
}
int main()
{
int n;
int ans;
int tem;
int fact;
int max;
isprime();
while(cin>>n)
{
max=0;
while(n--)
{
cin>>tem;
fact=mfactor(tem);
if(max<fact)
{
max=fact;
ans=tem;
}
}
cout<<ans<<endl;
}
return 0;
}