华为——质数因子_
2017-07-04 23:28
260 查看
题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )最后一个数后面也要有空格
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
示例1
输入
180
输出
2 2 3 3 5
思路:
从2开始不停的判定是否含有2为因子,如果这个是因子,就加入因子集,然后继续从它开始判定。
这样从小到大不停的加,肯定是有序的,所以不需要Collections来sort了。注意continue。
没有它这个因子,那包含它的因子也不会有。就如果2的因子已经加完了,那么累计到4也不会成为它的因子了。因为4已经被前面的2加完了。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
long num = Long.valueOf(str);
ArrayList<Integer>list =new ArrayList<>();
int i =2;
while(i<=num){
if(num%i==0){
num/=i;
list.add(i);
continue;
}
i++;
}
//Collections.sort(list);
for(Integer integer:list)
System.out.print(integer+" ");
}
}