Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 850|回复: 0

java分解质因数两例

[复制链接]

该用户从未签到

发表于 2011-9-18 13:29:24 | 显示全部楼层 |阅读模式
//这个例子演示如何 运用递归来完成分解质因数
import java.util.List;
import java.util.ArrayList;
/**
* 分解质因数
*/
public class GetFactor{
  public static void main(String[] args){
   List< Long> factors=getFactors(5555566666L,2);
   List< Long> f=getFactors(18,2);
   System.out.println(factors);
   System.out.println(f);
   System.out.println(test(188888));
   System.out.println(test(18));
  }
/**
* 通过递归实现分解质因数
*
* @param n 要分解的数字
* @param factor起始因子
*
* @return 分解结果
*/
private static List< Long> getFactors(long n,long factor){
  //不断增大factor直到能整除n
  while(n%factor!=0&&factor< n){
  //得到2,3,5,7,9,11,13,...
factor=factor< 2?2:factor==2?3:factor+2;
}
List< Long> result;
if(factor>=n){//因子已经涨到和n一样大,说明n本身就是因子。这时递归完成
   result=new ArrayList< Long>();
}else{//因子能够整除n,于是继续分解除以因子后的结果
   result=getFactors(n/factor,factor);//向下递归
}
  result.add(factor);
  return result;
}
//分解质因数
public static String test(int n){
    StringBuffer str=new StringBuffer();
    str.append(n+ "= ");
    if(n <=3){
       str.append(n);
       return str.toString();
    }
    for(int i=2;i <=n/2;i++){
      if(n%i==0){
         str.append(i+ "* ");
         n=n/i;
         i=1;
      }
   }
  str.append(n);
  return
  str.toString();
}
}
运行:
C:\test>java   GetFactor
[19231, 271, 41, 13, 2]
[3, 3, 2]
188888= 2* 2* 2* 7* 3373
18= 2* 3* 3
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-10 23:53 , Processed in 0.360159 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表