Max Factor
题意:
输入一个正整数n(1 <=n<= 5000),然后输入n个正整数(1<=这些数<=20000),要你求这n个数里哪个数的最大素因数(即能被该数整除的最大素数)最大,然后输出这个数。若有两个数的最大素因数相同,则输出前面那个。
代码示例:
#include<stdio.h>
int a[30000];
void is_sushu()
{
int i,j;
a[1]=1;
for(i=2; i<20050; i++)
{
if(a[i]==0)
{
for(j=i; j<20050; j+=i)
a[j]=i;//素数筛法改装,是a[i]保存i的最大素因数
}
}
}
int main()
{
is_sushu();
int t,max,k=1,i;
while(~scanf("%d",&t))
{
max=0;
while(t--)
{
scanf("%d",&i);
if(a[i]>max)
{
max=a[i];
k=i;
}
}
printf("%d\n",k);
}
return 0;
}