Max Factor
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1559 Accepted Submission(s): 484
Problem Description
To improve the organization of his farm, Farmer John labels each of his N (1 <= N <= 5,000) cows with a distinct serial number in the range 1..20,000. Unfortunately, he is unaware that the cows interpret some serial numbers as better than others. In particular, a cow whose serial number has the highest prime factor enjoys the highest social standing among all the other cows.
(Recall that a prime number is just a number that has no divisors except for 1 and itself. The number 7 is prime while the number 6, being divisible by 2 and 3, is not).
Given a set of N (1 <= N <= 5,000) serial numbers in the range 1..20,000, determine the one that has the largest prime factor.
Input
* Line 1: A single integer, N
* Lines 2..N+1: The serial numbers to be tested, one per line
Output
* Line 1: The integer with the largest prime factor. If there are more than one, output the one that appears earliest in the input file.
Sample Input
Sample Output
Source
Recommend
teddy
题意:给一组数,求这组数当中质因子最大的。1 在这个题目中也被当成素数对待。
#include<stdio.h>
#include<string.h>
int biao[30000];
void fun()
{
memset(biao,0,sizeof(biao));
int i,j;
for(i=2;i<=29999;i++)
{
if(biao[i]==0)//是素数
for(j=1;i*j<=29999;j++)
biao[i*j]=i;//记录关于i的倍数
}
}
int main()
{
int T,s;
int max1,max2;
fun();
while(scanf("%d",&T)==1)
{
max1=0;
max2=1;//这个初始值必须是1,是0就wrong,貌似题中认为1也是素数。。
while(T--)
{
scanf("%d",&s);
if(biao[s]>max1)
{
max1=biao[s];
max2=s;
}
}
printf("%d\n",max2);
}
return 0;
}