Problem04 分解质因数

题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。

 1 import java.util.Scanner;
 2 public class Problem04 {
 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     public static void main(String args[]) {
 9         Scanner s = new Scanner(System.in);
10         System.out.println("请输入一个整数:");
11         int num = s.nextInt();
12         System.out.print(num+"=");
13         fenjie(num);
14         s.close();
15     }
16     
17     public static void fenjie(int n) {
18         //从最小的质数k=2开始,如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
19         for(int i=2; i<=n; i++) {
20             //如果这个质数恰好等于n,打印出即可
21             if(n==i) {
22                 System.out.print(n);
23                 return ;
24             }
25             //else如果n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
26             else if(n%i==0) {
27                 System.out.print(i+"*");
28                 fenjie(n/i);
29                 break;
30             }
31         }
32     }
33 }

输出结果:

1 请输入一个整数:
2 90
3 90=2*3*3*5

 

posted @ 2019-02-16 14:32  NemoWang  阅读(285)  评论(0编辑  收藏  举报