链接: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; }