java例题_04 分解质因数
Posted scwyqin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java例题_04 分解质因数相关的知识,希望对你有一定的参考价值。
1 /*4 【程序 4 分解质因数】
2 题目:将一个大于 2 正整数分解质因数。例如:输入 3, 3=3, 输入 6, 6=2*3,输入 90, 90=2*3*3*5。
3 程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:
4 (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
5 (2)如果 n<>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数 n,重复执行第
6 一步。
7 (3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。
8 */
9
10 /*分析:
11 * 1.从键盘输入一个整数n,百度到三种方法,感觉使用scanner类比较方便,没有局限性
12 * 2.用for循环遍历除以2~n,找到第一个能除尽的值a
13 * 3.用n除以a值得到新的n
14 * 4.重复以上过程,直到n=a;
15 */
16
17 //【注】因为最终需要得到所有a的具体值,以此想到数组,学习发现java中的数组和C中的数组声明时有区别
18
19
20
21 package homework;
22
23 import java.util.Scanner;
24
25 public class _04 {
26
27 public static void main(String[] args) {
28
29 System.out.println("请输入一个整数n:");
30 // 从键盘得到一个整数n
31 Scanner scan=new Scanner(System.in);
32 int n=scan.nextInt();
33 int m=n;
34 //声明一个长度为20的数组用来存放因数a的值
35 int a[]=new int[20];
36 //声明一个数组角标
37 int j=0;
38 //遍历2~n的值,用if语句判断呢能否整除
39 for (int i=2; i<=m;) {
40 if(m%i==0) {
41 a[j]=i;
42 j++; //多加了一个
43 m=m/i;
44 }
45 else {
46 i++;
47 }
48 }
49 //输出分解后的因式
50 System.out.print(n+","+n+"=");
51 System.out.print(a[0]);
52 for (int i=1; i<=j-1; i++) { //将多加的减回来
53 System.out.print("*"+a[i]);
54 }
55 }
56
57 }
以上是关于java例题_04 分解质因数的主要内容,如果未能解决你的问题,请参考以下文章