分解质因数

 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 }

 

posted on 2017-01-09 08:59  橙汁果果  阅读(198)  评论(0)    收藏  举报