给出一系列的数,判断谁的素数因子最大,然后把它输出
它本身不是素数,但它可以是两个素数的城际,那两个素数就是它的素数因子
#include<stdio.h>
#define M 20000+10
int pre[M];
int main()
{
int i,j;
pre[0]=1;
pre[1]=0;
for(i=2;i<M;i++)
{
for(j=i*i;j<M;j+=i)
pre[j]=1; //先进行素数打表,是素数的值为0,否则为1,此处把1当成素数
}
int x,y,n,a;
while(scanf("%d",&n)!=EOF)
{
x=y=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
for(j=a;j>0;j--)
{//不能继续用i,会把上面i的值转变
if(!pre[j])//是素数
{
if(a%j==0 && j>x)//并且是它的素数因子,并且最大
{
x=j;
y=a;
break;
}
}
}
}
printf("%d\n",y);
}
return 0;
}
/*
输出解释:
19是38的最大的素因子。其它没有哪个数有比它更大的素因子了。
*/