分解质因数
题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
package com.likunjie; import java.util.Scanner; public class ResolvePrimeNumber { public static void main(String[] args) { System.out.print("请输入一个正整数:"); Scanner scan = new Scanner(System.in); int num = scan.nextInt(); boolean flag = isPrime(num); //标志,判断输入的数字是否为质数 System.out.print(num + " = "); while(!flag){ int temp = minPrime(num); int temp2 = num / temp; System.out.print("" + temp + " * "); if(isPrime(temp2)){ System.out.print("" + temp2 + " "); break; } num = temp2;//除了最小因数外,将另外的一个因数赋给num,重新循环找出最小因数,直到它为质数 } } public static int minPrime(int n){ //返回该数的最小因数 for(int i=2;i<=n;i++){ if(n%i == 0){ return i; } } return 0; } public static boolean isPrime(int n){ //判断输入的参数是否为质数 for(int i=2;i<n;i++){ if(n%i == 0){ return false; } } return true; } }
结果:
请输入一个正整数:156
156 = 2 * 2 * 3 * 13