目录

一、题目:

二、思路:

三、代码:


一、题目:

分解因数      《分解因数》题目链接

所谓因子分解,就是把给定的正整数a,分解成若干个素数的乘积,即 a = a1 × a2 × a3 × ... × an,并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an。其中a1、a2、...、an均为素数。 先给出一个整数a,请输出分解后的因子。

输入描述:
输入包含多组数据,每组数据包含一个正整数a(2≤a≤1000000)。

输出描述:
对应每组数据,以“a = a1 * a2 * a3...”的形式输出因式分解后的结果。示例1
输入
10

18
输出
10 = 2 * 5

18 = 2 * 3 * 3

二、思路:

本题是因子分解,但是需要考虑素数的分解。即:

  • 如果是素数:例如 5 = 5
  • 如果是合数:例如12 = 2 * 2 * 3

从i = [ 2 , sqrt(a) ]循环判断,如果 i 能被 a 整除,就进入内循环。这个过程类似 《因子个数》的题。方法思路是一样的。题目链接:因子个数

具体思路在代码中。

1、题目要求的输入输出

因为最后输出有格式要求,所以我们用 printf 格式化输出,每个输出的后面都不一样,所以用字符串进行后面的显示。

使用 String.join()方法:返回使用指定分隔符拼接后的字符串。传入的参数有两个:分隔符(要以什么符号进行拼接)、需要拼接的字符串的数组/集合...这里使用List

2、质因数分解

循环从 2 开始判断,注意判断的范围 i <= Math.sqrt(n)  <--等价于--> i * i <= n

如果 n = x * y,那么如果 x <= y ,那么 x 一定在 [ 2 ,  ] 中。

 三、代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description: 质因数分解* User: WangWZ* Date: 2023-04-12* Time: 16:33*/
public class Main {//质因数分解: 分解 nprivate static ArrayList<String> func(int n) {ArrayList<String> ans = new ArrayList<>();//循环判断是否是 n的因子//i <= Math.sqrt(n) 也可以写成 i * i <= nfor(int i = 2; i <= Math.sqrt(n);i++) {//因为题目中,一个因子可以乘积多次,所以用 while循环//每循环一次更新 n 的值,再继续找更新后的 n的值的因子while(n % i == 0) {//此时 i 是 n 的一个因子,所以将 i 加入ans//ans 中存储的是String类型的,而 i是 int类型,所以要进行类型转换//使用String.valueOf(i)ans.add(String.valueOf(i));if(n % 1 == 0) {n = n / i;}}}//判断 n 的值//如果 n != 1,说明此时 n 是素数,其也是传入参数 n 的一个因子//如果 n == 1,说明上面的循环已经把 传入参数 n的全部因子找到了if(n != 1) {ans.add(String.valueOf(n));}//循环结束,返回ansreturn ans;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while(scanner.hasNextInt()) {//输入是数字int n = scanner.nextInt();//因为最后输出有格式要求,所以我们用 printf格式化输出//每个输出的后面都不一样,所以用字符串进行后面的显示//使用 String.join()方法:返回使用指定分隔符拼接后的字符串//传入的参数有两个:分隔符(要以什么符号进行拼接)、需要拼接的字符串的数组/集合...//这里使用ListList<String> list = func(n);System.out.printf("%d = %s\n",n,String.join(" * ",list));}}
}

《分解因数》:质因数分解相关推荐

  1. 求一个数的所有因数+质因数分解【数论】

    先附上所有因数的求法: 我的做法:是今天误打误撞写出来的: http://exam.upc.edu.cn/problem.php?id=5062 然后,我上网找居然没有人写一个高效一点的,我这个做法其 ...

  2. Vijos P1786 质因数分解【质因数分解】

    背景 NOIP2012普及组第一题 描述 已知正整数n是两个不同的质数的乘积试求出较大的那个质数. 格式 输入格式 输入只有一行包含一个正整数n. 输出格式 输出只有一行包含一个正整数p, 即较大的那 ...

  3. c语言素数筛法与分解素因数,质因数分解及代码:

    计算方法 短除法 求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止.分解质因数的算式的叫短除法,和除法的性质差不多,还可以用来求多个个数的公因式: 求最大公因数的一种方法,也可用来求最小 ...

  4. 质数判断及质因数分解 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 0和1不是质数 除了0,1,质数以外其他的数叫合数

    题目: 质数判断及质因数分解    质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 0和1不是质数 除了0,1,质数以外其他的数叫合数 代码部分: C++实现 #include ...

  5. C++判断是否为素数、求一个数的因数、质因数分解

    判断一个数是否为素数 #include<iostream> #include<vector> #include<math.h> #include<algori ...

  6. 模板 2018-01-27 分解因数 分解质因数

    这里有小部分需要用到前面的素数筛, 当然没有素数筛也是OK的, 但是可能慢一点. 先是普通的分解因数, 这个函数分解出来的是不含 本身 和 1 的因子, 并且返回这些因子的个数. 好像是叫做真因子吧? ...

  7. 质因数分解求给定正整数的因数个数

    正整数因数个数的快速求法 以72为例,将72进行质因数分解,72 = 2*2*2*3*3 = 2^3 * 3^2 将底数2的幂次和底数3的幂次分别加1再相乘 得到72的因数个数 = (3+1) * ( ...

  8. Python判断质数合数,质因数分解并得到所有因数

    Python判断质数合数,质因数分解并得到所有因数 判断质数.合数 质因数分解 得到所有正因数 完整程序 运行效果 判断质数.合数 要判断一个大于一的正整数是质数还是合数,只需判断在区间[2, √x] ...

  9. java正整数分解因数_java将一个正整数分解质因数

    import java.util.Scanner; import java.util.Vector; public class 分解质因数 { public static void main(Stri ...

最新文章

  1. 基于TensorRT的BERT实时自然语言理解(上)
  2. 每日一皮:昨晚梦见男朋友和别的女人在逛街,梦里我的第一反应就是查源代码......
  3. 教你从0到1搭建秒杀系统-限流
  4. 在python的dataframe中进行类似于mysql的join操作(持续更新)
  5. web-使用wsgiref模块模拟web框架
  6. 如何保护javascript代码
  7. 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
  8. 信息化集成,路在何方?
  9. 十个非常实用的PS画笔使用技巧
  10. 金融工程与并行计算:第二章 仿真法在财务工程的使用 Part 2
  11. Python批量检测域名是否被注册
  12. 菜鸟笔记--函数基础
  13. SEBank银行项目第一个星期的进度安排
  14. 不用电脑在手机上实现自动重签名
  15. 射频(RF)基本理论:定义、特性、调制、扩频
  16. 想学游戏建模要从哪里开始?,外包私活怎么接?
  17. 如何在matlab中表示e,Matlab中表达e的操作方法介绍
  18. pacemaker+corosync+pcs实验
  19. WaitForSingleObject与事件、信号量、互斥、临界区的用法
  20. 基于MT5的 国内期货交易系统

热门文章

  1. 联想凌拓“开业大吉” 是试水还是全面变革的前兆?
  2. 5G使用随笔-华为5G模块MH5000-31
  3. 【CSS】背景样式(颜色、图片、平铺、附着和位置)
  4. 3626 三元一次方程(枚举)
  5. 前端代码是怎样智能生成的
  6. 码上飞机大战v1.0.8
  7. 群智能(SI)与蚁群优化(ACO)概述
  8. Excel中快速填充产生连续的数字编号
  9. 深入学习Docker网络(看这篇就完全够了)
  10. Client MFC application解决办法