菜鸟涂鸦作品展_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/archive/2012/08/20/2647032.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的菜鸟涂鸦作品展_No.4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Silverlight 多窗口的实现.
- 下一篇: 电子工程师过去1年的点点滴滴