永发信息网

java输入一个整数,输出其所有素数因子

答案:3  悬赏:40  手机版
解决时间 2021-03-24 12:15
java输入一个整数,输出其所有素数因子
最佳答案
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

public class Prog4{
public static void main(String[] args){
int n = 13;
decompose(n);
}
private static void decompose(int n){
System.out.print(n+"=");
for(int i=2;iwhile(n%i==0 && n!=i){
n/=i;
System.out.print(i+"*");
全部回答
import java.util.ArrayList;
import java.util.List;
import java.lang.Math;
public class Solution {
private int num;
private List primeList;
private int index;

public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Solution(int num) {
this.num = num;
primeList = new ArrayList();
primeList.add(3);
}

public List findPrimeContainedList(){
index=0;
int operationNum = num;
List list = new ArrayList();
int stop = (int) Math.floor(Math.sqrt(operationNum));
if(stop <= 2){
return list;
}
operationNum = checkAndRemovePrimeNumber(operationNum,2,list);
stop = (int) Math.floor(Math.sqrt(operationNum));
int p = getNextPrimeNumber();
while(p <= stop){
operationNum = checkAndRemovePrimeNumber(operationNum,p,list);
stop = (int) Math.floor(Math.sqrt(operationNum));
p = getNextPrimeNumber();
}
list.add(operationNum);
return list;
}

private int checkAndRemovePrimeNumber(int num,int p,List resultList){
boolean f = false;
while(num%p == 0){
num/=p;
f = true;
}
if(f){
resultList.add(p);
}
return num;
}

private int getNextPrimeNumber() {
if(this.primeList.size()>index++){
return this.primeList.get(index-1);
}
int next = this.primeList.get(this.primeList.size()-1) + 2;
while(true){
int stop = (int) Math.floor(Math.sqrt(next));
boolean f = true;
for(int n: this.primeList){
if(n > stop){
break;
}
if(next%n==0){
f = false;
break;
}
}
if(f){
this.primeList.add(next);
break;
}else{
next += 2;
}
}
return next;
}
public static void main(String[] args) {
Solution s = new Solution(123);
System.out.println(s.findPrimeContainedList());
s.setNum(240);
System.out.println(s.findPrimeContainedList());
}
}
好久没写JAVA了。逻辑很简单,做了点优化。
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public class Prog4{
public static void main(String[] args){
int n = 13;
decompose(n);
}
private static void decompose(int n){
System.out.print(n+"=");
for(int i=2;iwhile(n%i==0 && n!=i){
n/=i;
System.out.print(i+"*");
}
if(n==i){
System.out.println(i);
break;
}
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果在教育孩子时,问孩子为什么作业没有完成
8又十一分之六减括号二又十三分之五加一又十
单选题Tom is a kind boy.&n
英语翻译你还能告诉我什么呢 ( ) ( ) can you
现代马比它的祖先更适应温带草原的生活,这主
为什么这么多人喜欢吃川行谷,有那么好吃吗
暗藏对友谊失望的句子,表达永不分离的句子
在天河客运站怎样去天河区车陂西路212号前进
通州区台湖镇湖光小区会拆迁吗
邓新强湖南大碗菜我想知道这个在什么地方
我把WORD的正文样式改掉了,怎么变回来啊!
华硕主板BIOS 升级
请问楚雄彝人古镇商铺年租金是多少?
主持人介绍嘉宾时发现嘉宾人未到现场怎么办
78×82的列竖式计算
推荐资讯
启明广告字牌地址在哪,我要去那里办事
我信用卡两万的,逾期两年没还了,银行律师通
怎样熔化白银
PPR管材的原材料有哪些
101公交车的发车时间
虚空幼龙任务 我找到那个NPC(莫德奈)为什么
美国力健的东西好么?
在新会总站怎样坐车到东莞(广东科技学院),
能实现的叫梦想不能实现的叫乱想
月薪10万怎么理财
cad2008如何画虚线
鼠标右键多出几个东西,如何去掉?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?