码迷,mamicode.com
首页 > 编程语言 > 详细

java例题_04 分解质因数

时间:2020-02-10 22:23:15      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:tin   for   分解   out   int()   str   style   执行   说明   

 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 分解质因数

标签:tin   for   分解   out   int()   str   style   执行   说明   

原文地址:https://www.cnblogs.com/scwyqin/p/12293031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!