1 package com.cskaoyan.JavaClaasic;
2 import java.util.Scanner;
3 /*题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
4 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
5 (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可
6 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
7 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步*/
8
9 //求质因数,质因数就是最小质数,求出来了第一个质数并打印出来,才能去求第二个质数,
10
11 public class JavaClassic4
12 {
13 //输入一个数,分解质因数
14 //分解质因数其实就是循环求质数,不过每次循环的次数不同
15 public static void main(String[] args)
16 {
17 Scanner sc = new Scanner(System.in);
18 System.out.println("请输入一个正整数");
19 int a = sc.nextInt();
20 zhiYin(a);
21 }
22 public static void zhiYin(int x)
23 {
24 System.out.print(x + " = ");
25 for (int i = 2; i < x + 1; i++)//从2开始寻找第一个最小质数
26 {
27 //这段while循环如果换成if判断语句的话,确定了最小的第一个质数之后将继续求新x的
28 //质数,不过是从i+1开始一直循环除到x+1,这里直接能看出if和while的区别
29 while ( (x % i == 0) && (x != i))//能被整除且x比原数小
30 { //第二遍循环确定最小质数
31 x = x / i;//循环寻找第二个质数的范围
32 System.out.print(i + " * " + " ");//打印每一个质数
33 }
34 if (x == i)//x本身为质数
35 {
36 System.out.println(i);
37 break;
38 }
39 }
40 }
41
42 }