黑马程序员技术交流社区
标题:
这道题我们老师都没搞出来,求答案
[打印本页]
作者:
qihaichengtian
时间:
2016-9-24 02:01
标题:
这道题我们老师都没搞出来,求答案
题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
作者:
rglyx
时间:
2016-9-24 14:46
咦~没有人吗?
沙发~不要想的那么复杂。
package it.cast.suiyi;
import java.util.ArrayList;
import java.util.Scanner;
public class fenjie {
public static void main(String[] args) {
//获取正整数
System.out.println("请输入一个正整数:");
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
fj(number);
}
public static void fj(int n){
//创建一个存放因数的集合
ArrayList<Integer> ys = new ArrayList<Integer>();
int m = n;
//判断是否为因数
for(int i=2;i<m;i++){
if(n%i == 0){
ys.add(i);
n = n/i;
i =1;
}
}
//遍历并重写集合
String jg = m+"=";
for(int i=0;i<ys.size();i++){
if(i==ys.size()-1){
jg += ys.get(i);
}else{
jg += ys.get(i)+"*";
}
}
System.out.println(jg);
}
}
作者:
rglyx
时间:
2016-9-24 15:00
啊咧,第一步给漏掉了,不好意思啊,我把方法重写了下
public static void fj(int n){
//创建一个存放因数的集合
ArrayList<Integer> ys = new ArrayList<Integer>();
int m = n;
//判断是否为因数
int count = 0;
for(int i=2;i<m;i++){
if(n%i == 0){
ys.add(i);
n = n/i;
i =1;
count++;
}
}
if(count ==0){
System.out.println(m);
}else{
//遍历并重写集合
String jg = m+"=";
for(int i=0;i<ys.size();i++){
if(i==ys.size()-1){
jg += ys.get(i);
}else{
jg += ys.get(i)+"*";
}
}
System.out.println(jg);
}
}
作者:
爱吃肉的猴子
时间:
2016-9-25 14:47
感觉编程还是要多看别人的代码啊,很多时候感觉脑子转不过来
作者:
爱你一万年
时间:
2016-9-25 16:15
好复杂啊!
作者:
qihaichengtian
时间:
2016-9-25 22:54
感觉不用这么复杂, 是前七天的课程的练习题
作者:
rglyx
时间:
2016-9-25 23:46
qihaichengtian 发表于 2016-9-25 22:54
感觉不用这么复杂, 是前七天的课程的练习题
还好啦,学完就会觉得这部分是最简单的了
作者:
疯狂的麦克斯
时间:
2016-9-26 00:21
表示数学题不会做。。。不过这个题思路都给了,如何找最小质数,就从2开始递增到你输入的数取模,就是思路三,==0就表示找到了k,在依次判断
作者:
九局下半
时间:
2016-9-26 15:05
好像好厉害的样子啊。
作者:
赢无翳
时间:
2016-9-30 21:28
我觉得这个题跟另外一个题有点类似
给两个数m 和 n 从数列1 , 2 , 3....n中随意取几个数 使其和等于m 要求将其中所有的可能组合列出来
作者:
bahamut322
时间:
2016-9-30 22:39
好像有点意思
作者:
暮雨微凉
时间:
2016-9-30 22:42
你确定老师都不会做么。。。
作者:
Da_xigua
时间:
2016-9-30 22:55
哈哈哈,厉害
作者:
CreScert
时间:
2016-9-30 23:10
如果之前我学过面向过程的算法,比如c语言,这道题不难。反正我看不难。有机会过几天发代码
作者:
企鹅1号
时间:
2016-9-30 23:37
老师是不想告诉你
作者:
yu244934256
时间:
2016-10-1 00:15
这道题可以和找出指定范围的质数一起思考着做,很有艺术
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2