編程題目:
42.從控制檯輸入一個正整數,並將其分解成質因數相乘的格式。例如:輸入90,打印出90=2x3x3x5
示例代碼:
package program.calculation.exercise42;
import java.util.Scanner;
/**
* 42.從控制檯輸入一個正整數,並將其分解成質因數相乘的格式。例如:輸入90,打印出90=2*3*3*5。
*
* 質因數概念:
* 如果正整數m能被n整除,則稱m是n的因數,如果m是質數,則稱m是n的質因數。
* 例如,4和3都能被12整除,所以4和3都是12的的因數,而3是質數,所以3是12的質因數。
* 分析:對n進行分解質因數,應先找到一個最小的質數i,然後按下述步驟完成:
* (1)如果n==i,則說明分解質因數的過程已經結束,打印出即可。
* (2)如果n!=i,但n能被i整除,則應打印出i的值,並用n除以i的商,作爲新的正整數n,重複執行第一步。
* (3)如果n!=i,同時n不能被i整除,則用i+1作爲i的值,重複執行第一步。
*/
public class PrimeFactor {
public static void main(String[] args) {
System.out.println("請輸入一個正整數:");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
int plus = scanner.nextInt(); //獲得一個正整數
getPrimeFactor(plus);
}
//分解正整數的質因數
private static void getPrimeFactor(int n) {
System.out.print(n+" = ");
//如果n!=i,同時n不能被i整除,則用i+1作爲i的值,重複執行
for (int i=2;i<=n;i++) { //2是最小的質數
//如果n!=i,但n能被i整除,則應打印出i的值,並用n除以i的商,作爲新的正整數n,重複執行
while ((0 == n%i) && (i != n)) {
n /= i;
System.out.print(i + "*");
}
if(i == n) { //如果n==i,則說明分解質因數的過程已經結束,打印出即可
System.out.print(i);
break;
}
}
}
}