专栏首页程序编程之旅HDOJ/HDU 2710 Max Factor(素数快速筛选~)

HDOJ/HDU 2710 Max Factor(素数快速筛选~)

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 4 36 38 40 42

Sample Output 38

哎~又一个英文题~

题意: 输入一个正整数n,然后输入n个正整数(1<=a[i]<=20000),要你求这n个数里哪个数的最大素因数(即能被该数整除(包括这个数本身!)的最大素数)最大,然后输出这个数。若有两个数的最大素因数相同,则输出前面那个。

用到了素数快速筛选~不然会超时的~

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author 陈浩翔
 */
public class Main{
    static boolean db[] = new boolean[20005];
    public static void main(String[] args) {
        dabiao();
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int a[] = new int[n];
            int prime[] = new int[n];
            for(int i=0;i<n;i++){
                a[i]=sc.nextInt();
                for(int k=1;k<=a[i];k++){
                    if(db[k]&&a[i]%k==0){
                        prime[i]=k;
                    }
                }
            }
            int max=prime[0];
            int con=0;
            for(int i=1;i<n;i++){
                if(prime[i]>max){
                    max=prime[i];
                    con=i;
                }
            }
            System.out.println(a[con]);
        }
    }
    private static void dabiao() {
        Arrays.fill(db, true);
        for(int i=2;i<=Math.sqrt( db.length);i++){
            for(int j=i+i;j<db.length;j+=i){
                if(db[j]==true){
                    db[j]=false;
                }
            }
        }
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HDOJ(HDU) 2136 Largest prime factor(素数筛选)

    Problem Description Everybody knows any number can be combined by the prime nu...

    谙忆
  • HDOJ(HDU) 2138 How many prime numbers(素数-快速筛选没用上、)

    Problem Description Give you a lot of positive integers, just to find out how ...

    谙忆
  • HDOJ 1397 Goldbach's Conjecture(快速筛选素数法)

    Problem Description Goldbach’s Conjecture: For any even number n greater than ...

    谙忆
  • 挑战程序竞赛系列(14):2.6素数

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • PlayFramework 2.1 技巧-性能调优实战

    joymufeng
  • Redis List(3)

    在早期的版本中,数据量较小时用ziplist存储,达到临界值时转换为linkedlist进行存储,分别对应OBJ_ENCODING_ZIPLIST 和OBJ_E...

    兜兜毛毛
  • 算法训练营-第一周-数组链表

    栈是一种线性逻辑结构,栈的元素只能后进先出。最早进入的元素存放的位置叫做栈底,最后进入的元素存放的位置叫栈顶。

    编程之心
  • D3D深度测试和Alpha混合

    逍遥剑客
  • 通过例子学递归

    在文章正式开始之前,大家先思考一个问题:给定 1 元、2 元、5 元、10 元 四种纸币,如何通过组合(不限制单张纸币的使用次数)购买 12 元的商品?如果不考...

    用户2870857
  • 数据清洗过程中常见的排序和去重操作

    数据操作中排序和去重是比较常见的数据操作,本专题对排序和去重做专门介绍,并且给出一种不常用却比较有启发意义的示例:多列无序去重

    1480
  • 深度学习与TensorFlow:FCN论文翻译(二)

    Each layer of data in a convnet is a three-dimensional array of size h × w × d, ...

    云时之间
  • 模拟退火算法从原理到实战【基础篇】

      模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达...

    Angel_Kitty
  • 使用 Stream API 高逼格 优化 Java 代码!

    Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读

    搜云库技术团队
  • 20条非常实用的Python代码,建议收藏!

    据说Python之父-Guido Van Rossum打算让CPython更快,速度直接翻五倍,这是实实在在的好消息。

    小F
  • Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

    Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。

    云深i不知处
  • [PYTHON] 核心编程笔记之八-Py

    if make_hard_copy: send_data_to_printer()

    py3study
  • Stream API 学会这样用,简化代码真牛批!

    www.juejin.im/post/5d8226d4e51d453c135c5b9a

    Java技术栈
  • Redis最新版本5.0.4配置文件详解

    #当你需要为某个配置项指定内存大小的时候,必须要带上单位, #通常的格式就是 1k 5gb 4m 等: #1k => 1000 bytes #1kb => 10...

    Java学习录
  • 前端ThinkJS框架解析

    Thinkjs 是一个快速、简单的基于MVC和面向对象的轻量级Node.js开发框架,遵循MIT协议发布。秉承简洁易用的设计原则,在保持出色的性能和至简的代码同...

    xiangzhihong

扫码关注云+社区

领取腾讯云代金券