A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

同样是写了一个需求的代码,自己写的好复杂
需求:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
我自己写的
[Java] 纯文本查看 复制代码
package test4;

import java.util.ArrayList;
import java.util.Scanner;

public class Test {
/*
 * 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。自己偷懒,就没写是质素就直接返回质素的情况
 * */
	static int num = 0;
	public static void main(String[] args) {
		System.out.println("请输入一个整数:");
		num = new Scanner(System.in).nextInt();
		ArrayList<Integer> list = new ArrayList<Integer>();
		chuNum(list,num);
		System.out.println(list);
		StringBuffer s = new StringBuffer();
		for (int i = 0; i < list.size(); i++) {
			if (i == list.size() - 1) {
				s = s.append(list.get(i));
				break;
			}
			s= s.append(list.get(i)+" * ");
		}
		System.out.println(num+" = "+s);
	}
	private static void chuNum(ArrayList<Integer> list, int num2) {
		for (int i = 2; i < num2/2+1; i++) {
			if (num % i == 0) {
				num = num / i;
				list.add(i);	

				chuNum(list, num);
			}
		}
	}

}
------------简略版-----------------

[Java] 纯文本查看 复制代码
public class Demo{
	public static void main(String[] args){
		int n = 15;
		decompose(n);
	}
	private static void decompose(int n){
		System.out.print(n+"=");
		for(int i=2;i<n+1;i++){
			while(n%i==0 && n!=i){
				n/=i;
				System.out.print(i+"*");
			}
			if(n==i){
				System.out.println(i);
				break;
			}
		}
	}
}

4 个回复

倒序浏览
都是积累下的,相信有一天你也可以
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
wqq1317 发表于 2017-1-11 23:42
都是积累下的,相信有一天你也可以

好的,谢谢
回复 使用道具 举报
区别好大,看着一串英文,我很怀疑去学的时候能不能学上{:8_525:}
回复 使用道具 举报
HXF 发表于 2017-1-12 17:38
区别好大,看着一串英文,我很怀疑去学的时候能不能学上

恩,是差距好大,人家用if  while就解决了, 我还用了StringBuffer ,ArrayList,这内存消耗相对就大了很多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马