黑马程序员技术交流社区
标题:
各位大神能发点题目做做吗?好想做题啊
[打印本页]
作者:
shuimu_88
时间:
2014-8-14 19:18
标题:
各位大神能发点题目做做吗?好想做题啊
什么题都行,只要是java就行:D
作者:
hejinzhong
时间:
2014-8-14 19:22
对一个数进行质因数分解,写出思路和代码!
作者:
shuimu_88
时间:
2014-8-16 00:08
hejinzhong 发表于 2014-8-14 19:22
对一个数进行质因数分解,写出思路和代码!
/*
求解:对一个数进行质因数分解
思路:分解质因数,就是把一个合数分解成质数相乘如12=2*2*3;
设计到多次除法,用递归调用。
步骤:1.把一个数从2到自身减一取余数,如果不等于0的continue,
2.如果取余为0,将被除数储存到数组中,余数暂时存到一个变量中,
余数重新进行递归判断。
3.如果数组中0脚标数为0,则判断这个数不是合数。
*/
class DivisionDemo
{
static int count=0;
static int remainder=0;
static int arr[]=new int[10];
public static void main(String[] args)
{
divComposite(7);//传入需进行质因数分解的数
method(arr);
}
public static int divComposite(int num)
{
for(int i=2;i<num;i++)
{
if((num%i)!=0)
continue;
else
{
arr[count++]=i;
remainder=num/i;
//递归调用
divComposite(remainder);
//调用一次之后直接跳出循环
break;
}
}
arr[count]=remainder;//数组最后一个质数是余数
return remainder;
}
public static void method(int[] arr)
{
if(arr[0]==0)
{
System.out.println("该数不是合数,不能进行质因分解!");
}
else
{
print(arr);//调用数组打印函数
}
}
public static void print(int[] arr)//数组打印函数
{
for(int x=0;x<arr.length;x++)
{
System.out.print(arr[x]+",");
}
}
}
复制代码
作者:
hejinzhong
时间:
2014-8-16 00:21
本帖最后由 hejinzhong 于 2014-8-16 00:24 编辑
shuimu_88 发表于 2014-8-16 00:08
import java.io.*;
public class Factorization {
public void division(int input) {
for (int i = 2; i <= input / 2; i++) {
if (input % i == 0) {
System.out.print(i + "*");
division(input / i);
}
}
System.out.print(input);
System.exit(0);// 不能没有这句,否则结果会报错
}
//下面是接收键盘录入
public static void main(String[] args) {
Factorization f = new Factorization();
String s = null;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
s = in.readLine();
} catch (IOException e) {
}
int input = Integer.parseInt(s);
System.out.print(input + "的分解质因数为:" + input + "=");
f.division(input);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2