//【程序4】 题目:将一个正整数分解质因数。
//例如:输入90,打印出90=2*3*3*5。 //解答: 分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成://(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 //(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。//(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 //这个题目很明显是要用递归算法来实现的,打印“*”有些技巧,但也很容易解决,程序如下:import java.io.*;public class _4_zhiyin {
int zuixiao(int n){ int flag,i,j; labell: for (i=2 ; i<=n ; i++){ flag=0; for (j=2 ; j<=i ; j++){ if (i%j==0) flag++; } if (flag==1 && n%i==0){ System.out.print(i); break labell; } } //System.out.print(i); return i; } public static void main(String[] args) throws Exception{ _4_zhiyin z=new _4_zhiyin(); System.out.println("输入要分解的数值"); InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); int num=Integer.parseInt(br.readLine()); int m=1; System.out.print(num+"="); do { m=z.zuixiao(num); if (num>m) System.out.print("*"); num=num/m; } while(num/m>=1); }}
涂鸦心得:
搞了一早上,搞出这么一个小东西。试用了一下I/O输入,整个机制还是没搞明白,勉强先这样用着吧。另外,如果不加throws Exception的话会报错,java的抛出异常机制也是还没有搞清。使用了Integer.parseInt,把string型改为int。动手还是有收获的,继续吧。。。