题目:
将一个正整数分解质因数。
例如:输入90,打印出90=233*5。
程序分析:
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
方法一程序代码:
package com.ljy.tencent;
import java.util.Scanner;
/**
* 题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
* @author liaojianya
* 2016年10月2日
*/
public class QualityFactorsDecompose
{
public static void main(String[] args)
{
System.out.println("请输入需要分解的正整数:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
System.out.println(n + "分解质因数如下:");
System.out.print(n + "=");
deposition(n);
input.close();
}
public static void deposition(int n)
{
//判断该数是否为1,若是,直接打印。
if(n == 1)
{
System.out.println(n);
}
else
{
for (int i = 2; i <= n; i++)
{
//如果n能够被从2开始的i整除,则i即为n的最小质数。
if (n % i == 0)
{ //如果此时n == i说明n的最小质数即为本身
if (i == n)
{
System.out.print(i);
break;
}
else
{
System.out.print(i + "*");
//使用迭代寻找商的最小质数。
deposition(n / i);
break;
}
}
}
}
}
}
结果输出:
请输入需要分解的正整数:
20
20分解质因数如下:
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("请输入需要分解的正整数:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
System.out.println(n + "分解质因数如下:");
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;
}
}
}
}