现实生活中我们经常遇到这样的问题,对于一个给定的数,求出这个数的质因数,其实质因数非常重要,因为此数的所有真因数都可以通过质因数互相乘得到,所以质因数也是此数的最原始因数。

这道题目的分析是这样的:

我们知道最小的质数是2,那我们对这个数先作2分解,直接2不能分解了,我们再做3分解,直到3也不能分解了,那么下面每次分解的时候必定是质数,因为上面的分解把所有不是质数的情况去掉了。

举个例子:24,先分解2-->12,再分解2-->6,再分解2-->3,此时2已经不能再分解了,那么,现在就要做3分解,等等,每个数都可以这么来分析。

下面贴上自己的源代码,和大家讨论交流一下:

package programmer;import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;/** 求一个数的所有质因子,例如输入的是96,则96的所有质因子就是2,3*/
public class PrimeNum {private static String baseString;public void primeNum(int n, int m, String result) {if (n < m)baseString = result;else {if (n % m == 0) {primeNum(n / m, m, result + m + " ");} elseprimeNum(n, m + 1, result);}}public String getKinds(String result) {String[] tmp = result.split(" ");String target = "";TreeSet set = new TreeSet();for (int i = 0; i < tmp.length; i++) {set.add(Integer.valueOf(tmp[i]));}Iterator it = set.iterator();for (int i = 0; i < set.size(); i++)target += (Integer) it.next() + " ";return target;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();new PrimeNum().primeNum(n, 2, "");System.out.println("所有质因子的列表 :" + baseString);System.out.println("所有质因子的种类 :" + new PrimeNum().getKinds(baseString));}
}
从下面的运行截图可以看出,我们要将质因数消去重复项,每个质因数只出现一次。

求一个数的所有质因数相关推荐

  1. 利用C语言求一个数的所有质因数

    //求一个数的质因数 #include<stdio.h> void function(int n) { int sum = n; int i; for(i=2;i*i<=n;++i) ...

  2. Java表示0到200的质因数_java记——循环 求一个数的所有质因数

    问题及代码: 问题描述: 输入一个数,计算并输出这个数所有的质因数.例如 输入120,输出2 2 2 3 5 程序代码: public class Exercise4_16 { // Main met ...

  3. Python 输入一些数,统计最大值及其出现的频率,求一个数的全部质因数

    帮别人做的题,正好自己也刚学python,记录一下. maxi = -99999 cnt = 0 while True:num = int(input())if num == 0:breakif nu ...

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

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

  5. 求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)

    package Four; /** 分解质因数* 素数常用来分解质因数,每个数都可以写成一个或几个质数相乘的形式* 其中每个质数都是这个数的质因数,把一个数用质因数相乘的形式表示出来,* 就称为分解质 ...

  6. 算法——求某个数的质因数

    求某个数的质因数,打印的格式为90=2*3*3*5. 思路为:既然我们求质因数,我们可以利用遍历的方法,用这个数从2开始除直到该数本身寻找他的因数 1.第一个问题:因为数的因数可能重复比如9=3*3. ...

  7. 质因数 求约数 c语言,【初等数论】 求一个数有多少约数及所有约数之和、分解质因数...

    今天做题遇见,于是就搜了一下,于是就有了这篇文章.(其实我不知道原理....Orz)我觉得分解质因数的最优算法应该不是我这篇文章中的这个.....谁有好的算法可以给我说一下,谢谢. 1.有多少个约数: ...

  8. python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数

    题目 求三个数的最小公倍数 思路 首先求两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数就是最终结果 有两种方案求两个数的最小公倍数 1. 分解质因数,也是短除法(在程序上差别不大) 循环 ...

  9. 五十八、如何对一个数进行分解质因数

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 先问你们一个小学问题:什么是质因数?小学是对一个数进行分解质因数 上 ...

最新文章

  1. 无监督机器学习中,最常见4类聚类算法总结 | 技术头条
  2. [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉
  3. JS闭包—你不知道的JavaScript上卷读书笔记(二)
  4. 减治法在查找算法中的应用(JAVA)--折半查找
  5. mini-css-extract-plugin简介
  6. 在Struts结构中,JSP页面的元件命名最好别用大写字母开头
  7. oracle批量替换保留字,常见的oracle保留字
  8. solr 高并发_你真的了解并发编程吗?
  9. LVM基础详细说明及动态扩容lvm逻辑卷的操作记录
  10. Fragment中添加ListView而不使用ListFragment
  11. DAY02.使用JAVA从国家统计局爬取2020年全国统计用区划代码和城乡划分代码(省市区数据)
  12. 苹果手机浏览器字体渐变色无效?
  13. 计算机视觉 – Computer Vision | CV
  14. 大白话讲清楚JVM里的方法区、永久代以及元空间
  15. React Native --props使用之吹气球例子
  16. 神经网络matlab指纹识别_毕业设计论文-matlab指纹识别技术(含代码).doc
  17. 每日一“酷”之Cookie
  18. PyCharm的配置(背景颜色+字体大小+行号+解释器选择等)
  19. VUE事件参数$event
  20. JavaScript 之 对象及其本身

热门文章

  1. mt6735 [Audio Common]通话时,概率性出现听筒或喇叭无声问题,如何debug
  2. axure 浏览器插件
  3. CentOS 7 安装Xmind8
  4. 国产芯片--芯旺微--KungFu--ChipOn-脱机烧录
  5. python一元二次方程表达式_Python实现求解一元二次方程的方法示例
  6. Android MVC开发框架
  7. 无符号数在计算机中怎么存储,计算机中数的存储
  8. angularjs修改html标签,angularjs sanitize+ng-bind-html内置指令做html标签转义
  9. Camtasia 2021 for Mac(顶级屏幕录像视频编辑软件)
  10. 机票分享第六篇 机票搜索系统演进的经验