同样是写了一个需求的代码,自己写的好复杂
需求:题目:将一个正整数分解质因数。例如:输入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;
}
}
}
}
|