要求:用户输入一个正整数,然后以降序显示它的所有最小因子,例如:120,那么显示的最小因子为5,3,2,2,2。存储这些素数(例如:2,2,2,3,5)获取这些按倒序显示这些因子。
package com.zyn.iteye;
import java.util.ArrayList;
import java.util.List;
public class StackOfIntegers {
//存放分解的素数
List<Integer> list = new ArrayList<Integer>();
//主方法,求分解素数
public void getSub(int sum){
//获取中间数的后一个数,保证中间数可以在下面的for中被循环
int middle = getMiddleAfter(sum);
//2是最小的素数,从2开始循环除
for(int i=2;i<middle;i++){
//如果i不为素数,直接跳过,循环下个数
if(!isSuShu(i)){
continue;
}
//余数
int yu = sum%i;
//商
int last = sum/i;
if(yu==0){
//余数为0,i为sum的因子,填入list
list.add(i);
//如果商为素数,则添加商到list,程序结束
if(isSuShu(last)){
list.add(last);
return;
}
//如果商不为素数,递归商调用本方法,分解商
getSub(sum/i);
//如果sum可以被素数因子整除,直接分解商,后续的因子不必再循环
break;
}
}
}
//如果可以被2整除,则+1,否则+1后再除以2
public int getMiddleAfter(int num){
if(num%2==0){
return num/2+1;
}else{
return (num+1)/2;
}
}
//判断是否是素数
public boolean isSuShu(int num){
boolean flag = true;
for(int i=2;i<num;i++){
if(num%i==0){
flag = false;
break;
}
}
return flag;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StackOfIntegers s = new StackOfIntegers();
s.getSub(120);
System.out.println(s.list);
}
}
分享到:
相关推荐
通过这样的程序,我们不仅可以找出一个整数的因子,还可以将其存储起来用于进一步的分析,比如计算最大因子、最小因子、平均因子等。在实际的编程项目中,可能还会涉及到多线程、并行计算等更复杂的技术来优化这个...
当输入一个正整数时,程序会输出其所有的质因子。 这个简单的C#实现可以作为学习和理解质因子分解的基础。在实际应用中,我们可以优化这个过程,比如使用更高效的质数检测算法,或者对大整数进行优化处理,以适应...
对于一个大于1的整数n,最小素因子是指能整除n的最小素数,而最大素因子则是指n的所有素因子中最大的那个。如果n=1,则通常规定最小素因子为无穷大,最大素因子为1,这主要是为了方便分析递推关系。 在文章中,作者...
在Java编程语言中,判断一个整数是否为质数是一个常见的数学问题,也是计算机科学基础课程中的典型示例。质数定义为只能被1和它本身整除的大于1的自然数,例如2、3、5、7、11等。在实际应用中,检查一个数是否为质数...
1. **函数`factorSum`**:该函数接收一个整数作为参数,返回该整数的所有真因子之和。函数使用了一个简单的循环结构,遍历所有可能的因子,并累加那些能够整除给定整数的因子。 2. **主函数`main`**:首先定义了一...
对于一个整数n,如果存在另一个整数m,使得n能被m整除,即n/m无余数,那么m就是n的因子。例如,6的因子有1、2、3和6。计算整数因子通常用于解决与数论相关的竞赛问题,比如找出所有因子、计算最大公约数(GCD)或...
在本问题中,我们需要找到一个正整数\( n \)的所有可能的划分方式,并计算出这些划分的数量。具体来说,对于一个正整数\( n \),其划分可以表示为: \[ n = n_1 + n_2 + \ldots + n_k \] 其中满足\( n_1 \geq n_2 \...
通过理解素数的概念以及如何在C#中实现素数判断,我们可以轻松地解决与素数相关的编程问题,比如找出一个范围内的所有素数,或者检查一个特定的数是否为素数。这样的功能在加密算法、数据结构和算法分析等许多IT领域...
具体来说,程序首先读取用户输入的一个或多个正整数,然后利用递归函数`search()`来找出这些数字的所有素因子,并以指数形式输出结果。 #### 2. C语言基础 - **变量声明**: 在`main()`函数中,声明了一个整型变量`N...
总结来说,质因数分解是将正整数表示为质数乘积的过程,而这个Java程序提供了一个基本的实现方法,通过递归地检查每个质数(从2开始)来找到所有因子。虽然它不是最优化的解决方案,但对于理解质因数分解的概念和...
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个...
在这个案例中,可能使用了Cplex作为求解器,Cplex是IBM开发的一个高效优化求解器,尤其擅长处理大规模的线性和混合整数优化问题。 Cplex通过先进的算法,如分支定界法和割平面法,能够在保证全局最优解的情况下快速...
- 创建一个映射表,将1-7对应的英文单词输出。 34. 计算表达式: - 接受两个整数和运算符,根据运算符进行相应的计算。 35. 闰年判断: - 根据闰年的定义(能被4整除且不能被100整除,或者能被400整除)判断2...
LCM和GCD之间存在一个关系:对于任何两个正整数a和b,它们的乘积等于两者的最大公约数与最小公倍数的乘积,即`a * b = GCD(a, b) * LCM(a, b)`。求解LCM通常可以通过已知的GCD来计算,或者直接列举出所有可能的倍数...
其中,d(n)是Dirichlet除数函数,它返回一个数n的所有正因子(包括1和n本身)的个数。因此,Tn是满足其因子个数等于n的所有正整数中的最小值。例如,T1=1,因为1只有一个因子1;T2=2,因为2有两个因子1和2。 文章...
解题思路:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个;最小公倍数是指两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数...
最大公因数(Greatest Common Divisor,简称GCD),也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。整数m和n的最大公约数记为GCD(m, n)。 最小公倍数(Least Common Multiple,简称LCM)是指两个...
设计整数处理程序题目要求:一、编写功能函数(1)求n!(2)求m的反序数。(3)判断m是否是素数。(4)判断m是否是完数,若是完数则输出其所有的因子。二、输入两个正整数m、n,完成如下功能:(根据题目要求调用...
在这个实验中,我们将编写一个Parent类,包含一个计算最大公约数的方法f(int a, int b),然后编写一个Child类,继承自Parent类,并重写方法f(int a, int b),使其返回两个整数的最小公倍数。 一、Java中的类继承...
为了实现质数分解,我们可以先判断一个数是否为质数,如果不是,我们可以通过分解其因子,不断找出质数并记录,直到所有因子都是质数为止。 最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common...