要求:用户输入一个正整数,然后以降序显示它的所有最小因子,例如: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);
}
}
分享到:
相关推荐
设p(n)表示整数n>1的最小素因子.本文得到了∑f(n),p(n)uo的渐近式,此处f(n)是一类数论函数。
Description ...第一行是一个整数n,表示有n个测试用例; 第2至n+1每行一个正整数。 Output 对应每组输入,输出正整数n的不同划分个数。 Sample Input 2 5 6 Sample Output 7 11
关于信息学奥赛一本通网站上的1154题:亲和数:自然数a的因子是指能整除a的所有自然数,但不含a本身。例如12的因子为:1,2,3,4,6。若自然数a的因子之和为b,而且b的因子之和又等于a,则称a,b为一对“亲和数” 。求...
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个...
解题思路:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个;最小公倍数是指两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数...
最大公因数(Greatest Common Divisor,简称GCD),也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。整数m和n的最大公约数记为GCD(m, n)。 最小公倍数(Least Common Multiple,简称LCM)是指两个...
设计整数处理程序题目要求:一、编写功能函数(1)求n!(2)求m的反序数。(3)判断m是否是素数。(4)判断m是否是完数,若是完数则输出其所有的因子。二、输入两个正整数m、n,完成如下功能:(根据题目要求调用...
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完 数。 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次...
10.3输入10个整数,将其中最小的数与第一个数对换,把最大的一个数与最后一个对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。 74 10.4有n个整数,使其前面各数顺序向后移m个位置,最后m个数...
设计一个队列用来存放1500个只有2,3,5因子的数 将第一个数送人队列中,即queen[0]=1; 设置三个指针p2 p3 p4开始指向queen[0] 找出p2,p3,p5所指向的数分别于2,3,5相乘后的最小值 2*queen[p2],3*queen[p3],5*queen[p5...
∨n∈N+,Smarandache因子个数为n的最小数Tn定义为最小的正整数k,使得d(k) = n. 即Tn = min{k:k∈N,d(k) = n},其中d(n)为Dirichlet除数函数.利用初等方法以及素数的分布性质研究ln(Tn)在Smarandache简单数列上的均值...
目前,它仍然是不超过50至60 位数的除数的最佳算法,因为其运行时间由最小因子p的大小决定,而不是由要被考虑的数n的大小决定。通常,ECM用于从具有许多因素的非常大的整数中去除小因素; 如果剩余的整数仍然是复合的...
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次...
1.输出所有的“水仙花数”,水仙花数是指一个三位数,这个数的各位数字的立方和就是该数本身。 2.将一个正整数分解质因数,如:18=2*3*3;...24.如果一个数恰好等于它的因子之和,则叫“完数”求1000以内所有完数;
对于一个实对称矩阵A,如果存在一个最小正整数k以及实矩阵(长方形)V,使得A= VVT,且V的每一列至多只有k个非零元素,则称A的因子宽度为k.利用可S-因子分解矩阵的S-秩以及因子宽度,引入相对因子宽度的定义,给出了...
1.3 求一个最小正整数 1.4 输入一个固定电话号码,判断是杭州地区还是非杭州地区 1.5 将1!+2!+…+10!的和 1.6 调用函数f,输出n的所有质数因子 1.7 改方法返回个位数为6,并且能被3整除的4位数的个数 1.8 对x=1,...
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数。 1. 程序分析:请参照程序上页程序14. 2.程序源代码: 【程序37】 题目:对10个数进行排序 1.程序...
题目描述:给定一个正整数 n,求其所有由两个素数组成的数 的和。 解析:先判断一个数是否为素数,即判断从 2 到该数-1 之间是 否存在该数的因子。然后,用两个循环枚举所有的两个素数,计算 它们的和。 2. 特别数列...
基于python实现的数学建模相关代码,包含回归、分类、差分、聚类、时间序列分析、因子分析等 01 基于cvxpy、scipy的线性规划 02 整数规划 03 基于cvxpy、scipy的非线性规划 05 基于networkx实现的一系列图算法和...
设计一个程序,它接受一个正整数,降序输出其所有最小素数因子。例如,如果整数是120,则输出5、3、2、2、2。使用StackOfIntegers类保存因子(如2、2、2、3、5),并利用它逆序获取和输出因子。