HDU 2710 Max Factor

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


 

原文地址:https://www.cnblogs.com/frankM/p/4399528.html