码迷,mamicode.com
首页 > 其他好文 > 详细

BASIC-16 | 分解质因数

时间:2017-10-31 14:14:53      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:建立   back   col   main   new   不能   als   质因数分解   java语言   

分解质因数

题目详情

技术分享

技术分享

 

解题分析

一)数据输入的是一个区间,必先建立一个循环,遍历区间里的每个整数,分别做质因数分解;

二)先判断整数是否为素数,若是,可直接打印;

(采用之前改进的判断素数的算法:算法改进 | java语言中判断素数

三)求解一个合数整数n的质因数:

令k为最小的质数(即2);

Step1 若n正好等于k,质因素分解完成,打印出n;

Step2 若n>或<k,但n能被k整除,记下该k,并令n除以k的商作为新的n,重复Step1;

Step3 若n不能被k整除,令k+1为新的k,重复Step1;

 

代码如下

 1 import java.util.Scanner;
 2 import java.util.ArrayList;
 3 
 4 public class Main {
 5 
 6     public static void main(String[] args) {
 7         // TODO 自动生成的方法存根
 8       Scanner scan= new Scanner(System.in);
 9       int a=scan.nextInt();
10       int b=scan.nextInt();
11       scan.close();
12 
13       for(int i=a;i<=b;i++){
14           //判断整数i是否为素数,若是,直接打印并跳出循环
15           if(isPrime(i)){System.out.println(i+"="+i);continue;}
16           
17           int k=2;
18           int n=i;
19           /*
20            * 建立动态数组
21            * 用于存储整数的质因数
22            */
23           ArrayList<Integer> n_k= new ArrayList<Integer>();
24           
25           while(n!=k){
26               if(n%k==0){
27                   n_k.add(k);
28                   n=n/k;
29               }
30               else k=k+1;
31           }
32           System.out.print(i+"=");
33           for(int j=0;j<n_k.size();j++)
34               System.out.print(n_k.get(j)+"*");
35           System.out.print(n+"\n");
36               
37       }
38       
39     }
40     static boolean isPrime(int num){
41         int tmp=(int)Math.sqrt(num);
42         if(num==2||num==3)return true;
43         if(num%6!=1&&num%6!=5)return false;
44         for(int i=5;i<=tmp;i+=6)
45             if(num%i==0||num%(i+2)==0)return false;
46         return true;
47     }
48 
49 }

 

测评

技术分享

 


E N D

 

BASIC-16 | 分解质因数

标签:建立   back   col   main   new   不能   als   质因数分解   java语言   

原文地址:http://www.cnblogs.com/INGRID-ThinkDifferent-20/p/7760937.html

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