java编程实现求质数与因式分解代码分享

下面是 "Java编程实现求质数与因式分解代码分享" 的完整攻略。

目录

  1. 介绍
  2. 求质数的代码实现
  3. 因式分解的代码实现
  4. 示例说明
  5. 总结

介绍

本文将介绍Java编程实现求质数与因式分解的代码。当我们需要判断一个数是不是质数时,我们可以使用质数的定义:只有1和该数本身能够整除它,它才是质数。因式分解是指将一个数分解成几个互质的整数乘积的形式。这里我们使用两种算法实现求质数:暴力算法、埃氏筛法以及一种算法实现因数的分解。

求质数的代码实现

暴力算法

暴力算法是从2开始枚举所有比目标数小的正整数,逐一判定是否为目标数的因数,时间复杂度为O(N)。

public static boolean isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

埃氏筛法

埃氏筛法是一种筛选法,它的思想是从小到大枚举每个质数,将质数的倍数都标记成合数,以此类推,直到枚举完所需范围的所有数,时间复杂度为O(N*log(log(N)))。

public static boolean[] sieveOfEratosthenes(int n) {
    boolean[] primes = new boolean[n + 1];
    Arrays.fill(primes, true);
    primes[0] = false;
    primes[1] = false;
    for (int i = 2; i * i <= n; i++) {
        if (primes[i]) {
            for (int j = i * i; j <= n; j += i) {
                primes[j] = false;
            }
        }
    }
    return primes;
}

因式分解的代码实现

public static List<Integer> factorize(int n) {
    List<Integer> factors = new ArrayList<>();
    for (int i = 2; i * i <= n; i++) {
        while (n % i == 0) {
            factors.add(i);
            n /= i;
        }
    }
    if (n > 1) {
        factors.add(n);
    }
    return factors;
}

示例说明

示例1:求100内的质数

boolean[] primes = sieveOfEratosthenes(100);
for (int i = 0; i <= 100; i++) {
    if (primes[i]) {
        System.out.println(i);
    }
}

输出结果:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

示例2:将20分解为质因数的乘积

List<Integer> factors = factorize(20);
System.out.println(factors);

输出结果:

[2, 2, 5]

总结

本文分享了Java编程实现求质数与因式分解的代码的攻略,介绍了求质数的两种算法实现以及因式分解的一种算法实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java编程实现求质数与因式分解代码分享 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java编程中拷贝数组的方式及相关问题分析

    下面是关于 “java编程中拷贝数组的方式及相关问题分析” 的完整攻略。 一、概述 在 Java 编程中,拷贝数组是一项非常重要的操作。它允许我们创建拷贝而非引用数组,这样我们就可以在更改数组内容的过程中保持原数组不变。在这篇攻略中,我们将探讨拷贝数组的不同方式以及如何使用每种方式。 二、使用 System 类的 clone() 方法 System 类的 c…

    Java 2023年5月26日
    00
  • 什么是Java内存泄漏?

    Java内存泄漏 (Memory Leak) 指在Java程序运行时,由于对象已经无法访问,但是资源或内存没有被释放,程序运行时会出现内存泄漏的情况。当程序运行时发现内存泄漏,会导致Java程序的内存使用率不断增加,并最终导致程序崩溃或运行异常缓慢。 在Java中常见的内存泄漏产生的原因有两种:未释放资源、循环引用。 未释放资源 Java程序在运行时会分配内…

    Java 2023年5月11日
    00
  • Java Spring框架的概述

    Java Spring框架是一个轻量级的应用程序框架,由许多模块组成,提供了针对企业级应用程序开发的全面支持。Spring框架采用了模块化的方法来设计,使得应用程序可以只包含其所需要的模块。此外,它还提供了面向切面编程的支持和对依赖注入的支持,这使得应用程序开发更加灵活和易于维护。 下面是几个Spring框架中最常用的模块: Core Container:包…

    Java 2023年5月19日
    00
  • 利用Java中Calendar计算两个日期之间的天数和周数

    我们来详细讲解一下如何利用Java中的Calendar类计算两个日期之间的天数和周数。 步骤一:创建Calendar实例 我们首先要创建两个Calendar对象,来表示两个日期。这里我们可以使用Calendar类的静态方法getInstance()来获取一个默认时区的实例。 Calendar cal1 = Calendar.getInstance(); Ca…

    Java 2023年5月20日
    00
  • 深层剖析java应用开发中MyBayis缓存

    针对“深层剖析java应用开发中MyBayis缓存”的完整攻略,我们可以从以下几个方面进行讲解: MyBatis缓存的概念:MyBatis缓存分为一级缓存和二级缓存。一级缓存是在SqlSession级别的缓存,是默认开启的,仅在同一SqlSession期间内有效。二级缓存是在SqlSessionFactory级别的缓存,生命周期只存在于一个会话期间中,也可以…

    Java 2023年5月20日
    00
  • Jsoup获取全国地区数据属性值(省市县镇村)

    OK,下面是Jsoup获取全国地区数据属性值的完整攻略。 1. 确定获取数据的网页 首先,我们需要确定获取全国地区数据的网页。这里以民政部门户网站行政区划代码为例。 2. 使用Jsoup获取网页内容 接着,我们可以使用Jsoup获取网页的内容。示例代码如下: String url = "http://www.mca.gov.cn/article/s…

    Java 2023年5月20日
    00
  • springboot快速集成mybatis-plus的详细教程

    下面是“springboot快速集成mybatis-plus的详细教程”: 1. 引入依赖 首先,在pom.xml文件中加入以下依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</a…

    Java 2023年5月20日
    00
  • 深入了解Java Object类的使用

    深入了解Java Object类的使用 在Java中,所有类都继承自Object类,并且Object类提供了许多有用的方法,因此了解Object类的使用可以帮助我们更好地编写Java代码。本文将深入介绍Java Object类的使用方法,包括toString()、equals()、hashCode()和getClass()方法等。 toString()方法 …

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部