zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    C语言实现二叉堆BuildHeap操作
    Java大浮点数
    线索二叉树
    二叉树的层次遍历
    CS231n Lecture3-Loss Functions and Optimization学习笔记
    Python函数式编程(高阶函数、map/reduce、filter、sorted、匿名函数、返回函数)-3
    CS231n Lecture2-Image Classification学习笔记
    Python高级特性(生成器、迭代器、列表生成式)-2
    Python函数(定义、参数、递归)-1
    Numpy中的广播(Broadcast)讲解简单易懂,困扰已久,终于想通了
  • 原文地址:https://www.cnblogs.com/jj81/p/7356860.html
Copyright © 2011-2022 走看看