菜鸟涂鸦作品展_No.4

//【程序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。动手还是有收获的,继续吧。。。

原文地址:https://www.cnblogs.com/aniuer/p/2647032.html