您的位置:首页 > 其它

HDU 2710 Max Factor

2014-05-16 13:29 232 查看
链接: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;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM 数学 素数