题目
输入一个正整数,按照从小到大的顺序输出它的所有质因子(如180的质因子为2 2 3 3 5 )
最后一个数后面也要有空格
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
分析与算法设计
题目要求对一个数进行质数因子分解,如180=2*2*3*3*5,而不是找除该数的所有质数因子
由此可设计如下算法:
- 令遍历数 i 等于2
- 如果ulDataInput能够整除遍历数,则令ulDataInput=ulDataInput / i,并记录下 i 的值
- 如果ulDataInput还能继续整除步骤2中的遍历数 i ,则继续步骤2中的操作,直到不能整除为止
- 将遍历数 i 加1,如果此时ulDataInput > 1,则继续步骤1
算法流程图
代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
long in = scanner.nextLong();
String result = getResult(in);
System.out.println(result);
}
public static String getResult(long ulDataInput){
int i=2;
String str = "";
while(ulDataInput>1){
while(ulDataInput%i==0){//除以一个数,直到不能整除
ulDataInput=ulDataInput/i;
str+=i+" ";
}
i++;
}
return str;
}
}
代码分析:getResult()方法中有两个循环,外层循环控制循环因子 i 的增量和边界,一旦进入内层循环 ulDataInput的值会持续刷新,代码ulDataInput保证了找出的所有因子都是质数