我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java中求质数与因式分解的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java中求质数与因式分解的示例分析

这篇文章主要介绍了java中求质数与因式分解的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1、求解质数

1.1说明

首先,我们来了解这样一个概念,那就是什么叫做质数?质数:一个数如果只能被1和它自己整除,这样的数被称为质数,与之对应的,称为和数。基于这样的一个概念,我们可以很快想到一个方法,就是从1开始,不断试探,看从1到它自己,是否有数字能够被他整除。

这样看来,其实求质数很简单,我们有没有更加便捷的方式呢?在这里介绍一个著名的Eratosthenes求质数方法。

1.2解法

首先知道这个问题可以使用回圈来求解,将一个指定的数除以所有小于它的数,若可以整除就不是质数,然而如何减少回圈的检查次数?如何求出小于N的所有质数?

假设要检查的数是N好了,则事实上只要检查至N的开根号就可以了,道理很简单,假设A*B=N,如果A大于N的开根号,则事实上在小于A之前的检查就可以先检查到B这个数可以整除N。不过在程式中使用开根号会精确度的问题,所以可以使用i*i<=N进行检查,且执行更快。

再来假设有一个筛子存放1~N,例如:

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ........ N

先将2的倍数筛去:

2 3 5 7 9 11 13 15 17 19 21 ........ N

再将3的倍数筛去:

2 3 5 7 11 13 17 19 ........ N

再来将5的倍数筛去,再来将7的质数筛去,再来将11的倍数筛去........,如此进行到最后留下的数就都是质数,这就是Eratosthenes筛选方法(EratosthenesSieveMethod)。

检查的次数还可以再减少,事实上,只要检查6n+1与6n+5就可以了,也就是直接跳过2与3的倍数,使得程式中的if的检查动作可以减少。

1.3代码

import java.util.*;  public class Prime {     public static int[] findPrimes(final int max) {      int[] prime = new int[max+1];      ArrayList list = new ArrayList();      for(int i = 2; i <= max; i++)        prime[i] = 1;       for(int i = 2; i*i <= max; i++) { // 这边可以改进        if(prime[i] == 1) {          for(int j = 2*i; j <= max; j++) {            if(j % i == 0)              prime[j] = 0;          }        }      }       for(int i = 2; i < max; i++) {        if(prime[i] == 1) {          list.add(new Integer(i));        }      }          int[] p = new int[list.size()];     Object[] objs = list.toArray();      for(int i = 0; i < p.length; i++) {       p[i] = ((Integer) objs[i]).intValue();     }          return p;   }      public static void main(String[] args) {     int[] prime = Prime.findPrimes(1000);          for(int i = 0; i < prime.length; i++) {       System.out.print(prime[i] + " ");     }          System.out.println();   } }

2、因式分解

2.1说明

如上所示,我们先来了解一下,什么叫做因式分解?将一个数,转换成另外几个数字的乘积,就被称为因式分解。当了解到这样一个概念之后,我们对比上面的求解质数,应该能够明白,其实这里我们是在求解一个和数的因子。

因式分解基本上就是使用小于输入数的数值当作除数,去除以输入数值,如果可以整除就视为因数,要比较快的解法就是求出小于该数的所有质数,并试试看是不是可以整除。

2.2代码

import java.util.ArrayList;  public class Factor {   public static int[] factor(int num) {     int[] pNum = Prime.findPrimes(num);          ArrayList list = new ArrayList();          for(int i = 0; pNum[i] * pNum[i] <= num;) {        if(num % pNum[i] == 0) {          list.add(new Integer(pNum[i]));         num /= pNum[i];        }        else          i++;      }       list.add(new Integer(num));          int[] f = new int[list.size()];     Object[] objs = list.toArray();     for(int i = 0; i < f.length; i++) {       f[i] = ((Integer) objs[i]).intValue();     }          return f;   }      public static void main(String[] args) {     int[] f = Factor.factor(100);     for(int i = 0; i < f.length; i++) {       System.out.print(f[i] + " ");     }     System.out.println();   } }

感谢你能够认真阅读完这篇文章,希望小编分享的“java中求质数与因式分解的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java中求质数与因式分解的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java中求质数与因式分解的示例分析

这篇文章主要介绍了java中求质数与因式分解的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、求解质数1.1说明首先,我们来了解这样一个概念,那就是什么叫做质数?质
2023-05-30

Java实现整数分解质因数的方法示例

本文实例讲述了Java实现整数分解质因数的方法。分享给大家供大家参考,具体如下:题目内容:每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x
2023-05-30

java命令中本质逻辑的示例分析

这篇文章将为大家详细讲解有关java命令中本质逻辑的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言在日常编码中,有了ide的支持,我们已经很少直接在命令行中直接执行java XXX命令去启动一
2023-06-15

Java中单例模式与多线程的示例分析

这篇文章主要介绍了Java中单例模式与多线程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。单例模式与多线程单例模式就是全局唯一但是所有程序都可以使用的对象写单例模式
2023-06-20

Java中Stack与Queue的示例分析

这篇文章给大家分享的是有关Java中Stack与Queue的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮
2023-06-15

Java中数组的示例分析

小编给大家分享一下Java中数组的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按
2023-06-20

Java中类与对象的示例分析

这篇文章主要介绍Java中类与对象的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!类和对象在面向对象中,类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。对象就是表示一
2023-06-20

Java中Math.round函数的示例分析

这篇文章给大家分享的是有关Java中Math.round函数的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.代码如下:public class TestMathRound { public st
2023-06-20

Java中拆解DDD的示例分析

这篇文章主要为大家展示了“Java中拆解DDD的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中拆解DDD的示例分析”这篇文章吧。项目需求信息这里还是大家比较熟悉的电商场景来进行
2023-06-29

Java中数组与常见异常的示例分析

这篇文章主要介绍Java中数组与常见异常的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数组的定义1:单个变量能存储信息2:用来存储具有相同数据类型的数据集合,可以使用共同的名字来引用数组中存储的数据。特点数
2023-06-29

Java中适配器模式的示例分析

小编给大家分享一下Java中适配器模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java程序设计模式系列之适配器模式理解适配器设计模式需要从生活中的
2023-06-03

Java中正则表达式的示例分析

这篇文章主要介绍了Java中正则表达式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现
2023-06-15

Java8中Lambda表达式与函数式接口的示例分析

这篇文章将为大家详细讲解有关Java8中Lambda表达式与函数式接口的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java8被称作Java史上变化最大的一个版本。其中包含很多重要的新特性,最核
2023-05-30

java中力求故障原子性的示例分析

这篇文章给大家分享的是有关java中力求故障原子性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。力求故障原子性第 8 项是关于失败的。一般规则是失败的方法不应该改变方法中对象的状态。为了尽早失败,一种方
2023-06-04

Java中数据结构的示例分析

这篇文章将为大家详细讲解有关Java中数据结构的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.1.1. 增量内存分配 ArrayList 、 HashMap 、 Vector 等类
2023-06-03

Java数据结构与算法的示例分析

这篇文章给大家分享的是有关Java数据结构与算法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。第1章 数据结构与算法基础概述1.1 数据结构和算法的重要性算法是程序的灵魂,优秀的程序可以在海量数据计算时
2023-06-29

Python中Flask请求扩展与中间件的示例分析

小编给大家分享一下Python中Flask请求扩展与中间件的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、请求扩展1.before_request作用: 类比django中间件中的process_request
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录