1 问题
将一个正整数分解质因数。
例如:输入90,打印出90=2*3*3*5。
2 方法
对n进行分解质因数,应先找到一个最小的质数k,求解质因数的过程与短除法类似,都是从最小的质数(2)开始除,若除不尽则从第二个质数(3)开始除,依次循环判断,所以这里我们用for循环和字符串来分解质因数。因为正整数范围内1不存在质因数,所以从2开始,然后按下述三种情况讨论完成:
如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出结果即可。
如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数,重复执行第一步。
如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
代码清单 1
package Class; public class Day01 { public void fengjie(int n){ for(int i=2;i<=n/2;i++){ if(n % i == 0){ System.out.println(i+"*"); fengjie(n/i); } } System.out.println(n); System.exit(0);//不能少这一句,不然结果会出错 } public static void main(String[] args) { String str=""; Day01 c=new Day01(); str= javax.swing.JOptionPane.showInputDialog("请输入N的值(输入exit退出):"); int N; N=0; try{ N=Integer.parseInt(str); }catch(NumberFormatException e){ e.printStackTrace(); } System.out.print(N+"分解质因数: "+N+"="); c.fengjie(N); } } |
3 结语
针对如何将一个正整数如何分解成质因数的问题,最后得到先找出一个最小质数k,利用for循环和字符串,然后以短除法的方式继续除,除不尽再除以下一个质数的方法,通过这个问题的学习,不仅可以锻炼我们自己的逻辑思维和加深对数组、逻辑控制、字符串等基础知识的了解,此代码的运行结果是对的,证明了该方法是有效的,本文的方法结果有是有效的,比较直观,但是过于简单。未来将探索更多方法。