华为OJ 初级:质数因子
2016-07-08 21:02
423 查看
描述 | 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 详细描述: 函数接口说明: public String getResult(long ulDataInput)输入参数: long ulDataInput:输入的正整数返回值: String |
---|---|
知识点 | 排序 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个long型整数 |
输出 | 按照从小到大的顺序输出它的所有质数的因子,以空格隔开 |
样例输入 | 180 |
样例输出 | 2 2 3 3 5 |
/*本题采用了两种方法 * 方法1:循环判断 * 方法2:使用递归 * */ import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long input = scanner.nextLong(); method_1(input); System.out.println(); method_2(input); scanner.close(); } static void method_1(long input) { long temp = input; StringBuffer stringBuffer = new StringBuffer(); for (int i = 2; i <= input; i++) { if (temp % i == 0) { //当可以整除,则说明是质数因子 temp = temp / i; //除掉当前判断出的质数因子 stringBuffer.append(i); //将质数因子存在stringbuffer中 i = 1; //由于每次要从i=2开始判断,所以这里当取到一个质数因子后,要跳出循环,令i=1,i++后则为2 continue; } } for (int i = 0; i < stringBuffer.length(); i++) { if (i != stringBuffer.length() - 1) System.out.print(stringBuffer.charAt(i) + " "); else System.out.print(stringBuffer.charAt(i)); } } static long method_2(long input) { for (int i = 2; i <= input; i++) { if (input % i == 0) { System.out.print(i + " "); return method_2(input / i); //使用递归,每次返回除掉质数因子后的值 } } return 0; } }
相关文章推荐
- 二维数组X按行顺序存储,其中每个元素占1个存储单元。若X[4][4]的存储地址为Oxf8b82140,X[9][9]的存储地址为Oxf8b8221c,则X----腾讯2016研发工程师在线模拟笔试题
- Unity Shader实现跳动的心脏
- CTS-任务添加
- git bash for windows
- 基于分支限界法的旅行商问题(TSP)一
- SQL Server的分页优化及Row_Number()分页存在的问题
- c++实现银行家算法
- 解决Mybatis使用log4j不能打印sql的问题
- java实现文件夹的复制和文件的复制
- 新版masonry设置
- UVa 1639 Candy
- 设计模式-观察者模式
- 利用分支限界法求解单源最短路(Dijkstra)问题
- 把图片导入到canvas
- JAVA并发编程的一些整理
- Android 来电(包括铃声),短信拦截的实现方法
- 第1章 Java程序设计概述
- OS X自带数码测色计的使用
- bzoj3223 文艺平衡树 (treap or splay分裂+合并)
- bzoj3223 文艺平衡树