• ACM Max Factor


    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 lineOutput* 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

    4
    36
    38
    40
    42

    Sample Output

    38
     1 /*
     2     Name: WTZPT    
     3     Copyright: 
     4     Author: 
     5     Date: 14/08/17 11:13
     6     Description:   先输入数字的个数n,然后n次输入数字,输出其中拥有最大素数因子的数字 
     7 */
     8 #include<bits/stdc++.h>
     9 using namespace  std;
    10 const int MAX =  50005;
    11 int prime[MAX],temp[MAX];
    12 void init()
    13  {
    14      memset(temp,1,sizeof(temp));
    15      for(int i = 2; i < MAX; i++)  /*先建立一个素数表*/
    16          if(temp[i])
    17          {
    18              temp[i] = 1; //素数 
    19              for(int j = i*2; j < MAX; j+=i)
    20                  temp[j] = 0; //非素数 
    21         }
    22     
    23     prime[1] = 1; //素数      
    24     int count = 2; 
    25     for(int i = 2; i < MAX; i++)   /*把素数存储到一个容器内*/ 
    26     {
    27         if(temp[i])
    28             prime[count++] = i;
    29     }
    30              
    31  }
    32 int main()
    33 {
    34     init();
    35     int t,ans,max;
    36     while(cin>>t)
    37     {
    38         max = 0;
    39         memset(temp,0,sizeof(temp));    
    40         for(int i = 1; i<= t; i++)
    41             scanf("%d",&temp[i]);
    42             
    43         for(int i = 1; i <= t; i++)        /*对每个输入的数进行处理*/ 
    44             for(int j = 1; prime[j] <= temp[i]; j++)  /*二营长,把老子的意大利炮拉出来*/ 
    45                 if(temp[i] % prime[j] == 0)         /*应题目要求 因子为素数的情况*/ 
    46                     if(max < prime[j])                /*当目前的素数因子最大时*/ 
    47                     {
    48                         max = prime[j];
    49                         ans = i;                    /*存储原数据的位置*/ 
    50                     }
    51         cout<<temp[ans]<<endl;    
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    UML总结4---UML九种图关系说明
    TCP/IP学习笔记__mbuf
    操作系统内存管理之 内部碎片vs外部碎片
    校园招聘面试-操作系统知识总结 分看点三
    操作系统常见面试题总结 分看点二
    操作系统之面试常考 分看点一
    操作系统基础知识总结(二)
    操作系统基础知识总结(一)
    Java HashMap的扩容
    linux查看端口被占用情况
  • 原文地址:https://www.cnblogs.com/jj81/p/7356860.html
Copyright © 2020-2023  润新知