題目:
將一個正整數(shù)分解質因數(shù)饵隙。
例如:輸入90,打印出90=233*5畏鼓。
程序分析:
對n進行分解質因數(shù)嘿悬,應先找到一個最小的質數(shù)k锋爪,然后按下述步驟完成:
(1)如果這個質數(shù)恰等于n,則說明分解質因數(shù)的過程已經(jīng)結束姥宝,打印出即可翅萤。
(2)如果n<>k,但n能被k整除腊满,則應打印出k的值断序,并用n除以k的商,作為新的正整數(shù)n,重復執(zhí)行第一步流纹。
(3)如果n不能被k整除,則用k+1作為k的值,重復執(zhí)行第一步违诗。
方法一程序代碼:
package com.ljy.tencent;
import java.util.Scanner;
/**
* 題目:將一個正整數(shù)分解質因數(shù)。例如:輸入90,打印出90=2*3*3*5疮蹦。
* 程序分析:對n進行分解質因數(shù)诸迟,應先找到一個最小的質數(shù)k,然后按下述步驟完成:
* (1)如果這個質數(shù)恰等于n愕乎,則說明分解質因數(shù)的過程已經(jīng)結束阵苇,打印出即可。
* (2)如果n<>k感论,但n能被k整除绅项,則應打印出k的值,并用n除以k的商,作為新的正整數(shù)n,重復執(zhí)行第一步比肄。
* (3)如果n不能被k整除快耿,則用k+1作為k的值,重復執(zhí)行第一步。
* @author liaojianya
* 2016年10月2日
*/
public class QualityFactorsDecompose
{
public static void main(String[] args)
{
System.out.println("請輸入需要分解的正整數(shù):");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
System.out.println(n + "分解質因數(shù)如下:");
System.out.print(n + "=");
deposition(n);
input.close();
}
public static void deposition(int n)
{
//判斷該數(shù)是否為1芳绩,若是掀亥,直接打印。
if(n == 1)
{
System.out.println(n);
}
else
{
for (int i = 2; i <= n; i++)
{
//如果n能夠被從2開始的i整除妥色,則i即為n的最小質數(shù)搪花。
if (n % i == 0)
{ //如果此時n == i說明n的最小質數(shù)即為本身
if (i == n)
{
System.out.print(i);
break;
}
else
{
System.out.print(i + "*");
//使用迭代尋找商的最小質數(shù)。
deposition(n / i);
break;
}
}
}
}
}
}
結果輸出:
請輸入需要分解的正整數(shù):
20
20分解質因數(shù)如下:
20=2*2*5
方法二程序代碼:
package com.ljy.tencent;
import java.util.Scanner;
/**
* 不適用迭代的方法
* @author liaojianya
* 2016年10月2日
*/
public class Test1{
public static void main(String[] args)
{
System.out.println("請輸入需要分解的正整數(shù):");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
System.out.println(n + "分解質因數(shù)如下:");
deposition(n);
input.close();
}
private static void deposition(int n){
System.out.print(n+"=");
for(int i=2;i<n+1;i++){
while(n%i==0 && n!=i){
n/=i;
System.out.print(i+"*");
}
if(n==i){
System.out.println(i);
break;
}
}
}
}