1285: Factors

参考

  hadis_fukan的博客——wustoj 1285 Factors

题目

  输入一个数n,找出1~n之间(包括1,n)的质因子最多的数(x)的质因子个数(f[x])。更多内容点击标题。

分析

  很明显,这题的结果是可以直接算出来的,保存到数组中。通过题目,就可以了解到,我们需要算出2-2000000之间所有的数的质因子的个数。这样才能找出1~n之间质因子最多的数x。这里你可能想是不是需要先将质数单独求出来。那是完全没必要的。我们只需要在求因子的过程中,顺带着区分出质数即可。并且合理利用已经计算出的质数。

测试数据

 输入

2
3
4
5
6
7
8
9

 输出

1
1
2
2
2
2
3
3

代码

/*** time 1148ms* @author PengHao* @version 1.0* @date 2019-05-03 上午9:34:02* Environment:    Windows 10* IDE Version:    Eclipse 2019-3* JDK Version:    JDK1.8.0_112*/import java.io.BufferedInputStream;
import java.util.ArrayList;
import java.util.Scanner;public class Main {private Scanner sc;/*** @Field <code>MAXN</code> N的最大值*/private static final int MAXN = 2000000;/*** @Field <code>prime</code> 保存素数*/private ArrayList<Integer> prime;/*** @Field <code>f</code> x的质因子的个数为f[x]*/private byte[] f;/*** @Field <code>maxF</code> 1-n之间质因子最多的数的质因子个数*/private byte[] maxF;public Main() {sc = new Scanner(new BufferedInputStream(System.in));initF(); // 初始化finitMaxF(); // 初始化maxFint n;while (sc.hasNext()) {n = sc.nextInt();System.out.println(maxF[n]);}sc.close();}/*** Initialize the array f.*/private void initF() {prime = new ArrayList<Integer>(); // 保存素数f = new byte[MAXN + 1]; // 记录质因子个数boolean iPrime; // true 质数,false 非质数for (int i = 2; i <= MAXN; i++) {iPrime = true; // 默认i是质数for (int j : prime) { // 取出一个质数j// 如果j的平方大于i,那么j肯定不是i的因子// 因此i就是质数if (j * j > i) {break;}if (0 == i % j) { // 如果j是i的因子iPrime = false; // 那么i是不是质数// i的质因子个数等于另一个因子的质因子个数加1f[i] = (byte) (f[i / j] + 1);break;}}if (iPrime) { // 如果i是质数prime.add(i); // 将i加到质数数组列表中f[i] = 1; // 并且质数i的质因子个数为1}}}/*** Initialize the array maxF.*/private void initMaxF() {maxF = new byte[MAXN + 1];byte max = 0; // 记录质因子个数的最大值for (int i = 2; i <= MAXN; i++) {if (f[i] > max) { // 当前数i的质因子个数比max大max = f[i]; // 更新最大值}maxF[i] = max; // 将最大值保存到数组中}}public static void main(String[] args) {new Main();}
}

写在最后:

  1. 如需转载,请于首页注明链接形式的wowpH的博客——WUSTOJ 1285: Factors(Java);
  2. 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
  3. 如果有疑问欢迎评论留言,尽量解答。

转载于:https://www.cnblogs.com/wowpH/p/11060802.html

WUSTOJ 1285: Factors(Java)相关推荐

  1. WUSTOJ 1282: Start(Java)

    1282: Start 题目   判断一个字符串是不是回文串.例如:"abcba"是回文串.更多内容点击标题. 分析   水题,自己思考. 代码 /*** time 838ms* ...

  2. WUSTOJ 1324: Base64 Coding(Java)未解决,求题解

    题目链接:1324: Base64 Coding 资料:ASCII码表 原文是英文,而且篇幅较长.因此下面不粘贴原文,只写中文大意. Description Base64是一种编码算法.它的工作原理是 ...

  3. 常惠琢 201771010102《面向对象程序设计(java)》第七周学习总结

    实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: (2)掌握Object类的常用API用法: (3)掌握ArrayList类用法 ...

  4. 建立与ftp服务器的连接——完成版(java)

    建立与ftp服务器的连接--完成版(java) // ftp 程序Ftp.java // 此程序的功能是建立与ftp服务器的连接并实现文件传输 // 使用方法:java Ftp 服务器地址 //启动示 ...

  5. 海康摄像头的二次开发(java)

    海康摄像头的二次开发(java) 我第一次接触海康摄像头的二次开发的项目,一开始的时候摸不清套路,走了不少弯路,现在准备把我的一些经验留下来,让大家参考一下. 1.首先到海康的官网下载设备网络SDK: ...

  6. 《编程导论(Java)#183;1.4.1 范式》

    这个楼主,是我的学生么?2013年写的! 嗯."编程范式或许是学习不论什么一门编程语言时要理解的最重要的术语".这句话早在2005年出版<Java程序设计>(宋中山,严 ...

  7. 201771010106东文财《面向对象程序设计(java)》实验12

    实验十二  图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的AP ...

  8. 2018面向对象程序设计(Java)第3周学习指导及要求

    2018面向对象程序设计(Java) 第3周学习指导及要求(2018.9.11-2018.9.16)   学习目标 适应老师教学方式,能按照自主学习要求完成本周理论知识学习: 掌握Java Appli ...

  9. 一些面试题(JAVA)

    一些面试题(JAVA) 01.通过什么参数分配Java内存使用? java -Xms128m -Xmx512m 02.Treemap和Hashmap区别是什么? TreeMap对Key进行排序,而Ha ...

最新文章

  1. mysql 事物 锁行 测试_MySQL Transaction--RC事务隔离级别下加锁测试
  2. 成功解决from nets import inception_resnet_v2 ModuleNotFoundError: No module named 'nets'
  3. 美术的故事 —— 那些用技术创造艺术的游戏开发者
  4. 利用redis实现分布式锁
  5. 3dmark for android,Android版3DMark首测
  6. python如何给定取值范围_python怎么限定函数自变量取值范围
  7. linux下源码安装官方最新版Python
  8. 计算机主机硬件详细介绍,计算机系统的硬件和系统软件详细介绍
  9. Eclipse教程(3)--- 修改字符集
  10. sklearn之Pipeline 估计器
  11. mysql怎么从1开始递增
  12. 低代码平台会成为企业数字化基础设施么?
  13. 非家用的监控摄像头都无复位功能
  14. android文件管理器,10款优秀的Android文件管理器
  15. 移动魔百和M302A-ZN-S905L2_蓝牙语音正常_线刷免费固件包
  16. 华为手机的快应用是什么?如何使用快应用?
  17. SpringBoot 实战:加载和读取资源文件
  18. 数字化时代已经改变了我们的沟通方式
  19. ps大图缩小让小图更清晰
  20. Python 基础|while 循环语句

热门文章

  1. java 从一个容器获取对象,Java 如何实现从spring容器中获取注入的bean对象
  2. 【操作系统笔记】中断系统
  3. 华为摄像头搜索软件_华为Mate 40 Pro评测:硬件和软件表现都近乎完美
  4. 新手小白python数据清洗代码_5天10分钟,学会数据清洗!(Python)
  5. setwindowpos怎么改变z序_Windows转Mac——操作习惯的改变!
  6. 域名扫描linux,ksubdomain 无状态域名爆破工具
  7. 【编辑器】用CodeRunner打造VScode的C++开发环境
  8. 销售管理c语言程序设计,C语言课程设计销售管理系统
  9. 第二章 ASP.NET MVC (控制器向视图传递值(二))
  10. python入门--斐波那契数列