菜鸟涂鸦作品展_No.4
//【程序4】 題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。
//例如:輸入90,打印出90=2*3*3*5。
//解答: 分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:
//(1)如果這個(gè)質(zhì)數(shù)恰等于n,則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié)束,打印出即可。
//(2)如果n>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)n,重復(fù)執(zhí)行第一步。
//(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
//這個(gè)題目很明顯是要用遞歸算法來(lái)實(shí)現(xiàn)的,打印“*”有些技巧,但也很容易解決,程序如下:
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("輸入要分解的數(shù)值");
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);
}
}
?
涂鴉心得:
搞了一早上,搞出這么一個(gè)小東西。試用了一下I/O輸入,整個(gè)機(jī)制還是沒(méi)搞明白,勉強(qiáng)先這樣用著吧。另外,如果不加throws Exception的話會(huì)報(bào)錯(cuò),java的拋出異常機(jī)制也是還沒(méi)有搞清。使用了Integer.parseInt,把string型改為int。動(dòng)手還是有收獲的,繼續(xù)吧。。。
轉(zhuǎn)載于:https://www.cnblogs.com/aniuer/archive/2012/08/20/2647032.html
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的菜鸟涂鸦作品展_No.4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Silverlight 多窗口的实现.
- 下一篇: 电子工程师过去1年的点点滴滴