使用Java对一个自然数进行因式分解
程序员文章站
2022-05-28 18:02:15
...
问题
给定一个自然数,返回其因式分解,如:
35: [5, 7]
28: [2, 2, 7]
46: [2, 23]
512: [2, 2, 2, 2, 2, 2, 2, 2, 2]
320: [2, 2, 2, 2, 2, 2, 5]
3234: [2, 3, 7, 7, 11]
算法
对指定的自然数进行循环,每次循环中使用计数器i与之求余,如果可以整除则进行记录到一个List中,当除的值最终为1时,循环结果,最后将计算结果输出。
代码
import java.util.ArrayList;
public class Test{
public static void main(String[] args)throws Exception{
if(args.length > 0){
int n = Integer.parseInt(args[0]);
System.out.print(n + ": ");
print(factorial(n));
}
var nums = new int[]{35, 28, 46, 512, 320, 3234};
for(var n: nums){
System.out.print(n + ": ");
print(factorial(n));
}
}
/**
* 对自然数 n 进行因式分解,n 如果小于2,则报错。
* @param n 待分解的自然数n
* @return
*/
static ArrayList<Integer> factorial(int n) throws Exception {
if(n <2){
throw new Exception("输入的自然数必需大于2.");
}
var list = new ArrayList<Integer>();
while(n > 1){
for(int i = 2; i <= n; i++){
if(n % i == 0){
list.add(i);
n /= i;
break;
}
}
}
return list;
}
/**
* 显示一个 ArrayList<Integer> 对象,格式为 [v1, v2,..., vn]
* @param list
*/
static void print(ArrayList<Integer> list){
System.out.print("[" + list.get(0));
for(int i = 1; i < list.size(); i++)
System.out.print(", " + list.get(i));
System.out.println("]");
}
}
上一篇: python file 文件处理
下一篇: js文件处理 File API
推荐阅读
-
java使用DOM对XML文档进行增删改查操作实例代码
-
分享一个使用mysql dump对MySQL数据库进行备份及恢复教程
-
Java使用poi对Excel进行读和写处理
-
java 使用面向对象方式实现录入学生信息,取出成绩最大值、最小值、平均值、对其进行排序
-
荐 java 怎么使用 设计模式对业务进行解耦(一)
-
使用Java8 Stream API对Map按键或值进行排序
-
Java使用正则表达式对注册页面进行验证功能实现
-
java8的新特性,Collections.sort(排序的List集合)的使用,对list封装Map里面的某个值进行排序
-
Java中使用Jedis连接Redis对List进行操作的常用命令
-
Java中使用Jedis连接Redis对SortedSet进行排序操作