Java實(shí)現(xiàn)將一個(gè)正整數(shù)分解質(zhì)因數(shù)
* 題目:將一個(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.util.Scanner; public class Yinshifenjie { public static void fenjie(int n) { for (int i=2;i <=n;i++) { if (i == n) { System.out.print(i); return; } if (n > i && (n % i == 0)) { System.out.print(i+"*"); fenjie(n / i); break; } } } public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)整數(shù):"); int n = input.nextInt(); fenjie(n); } } |
posted on 2014-09-04 09:47 順其自然EVO 閱讀(232) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄