输入一个long型整数, 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
例:180——2 2 3 3 5
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
long ulDataInput = scanner.nextLong();
String r = Method.getResult(ulDataInput);
System.out.println(r);
}
}
}
class Method{
public static String getResult(long ulDataInput){
StringBuffer result = new StringBuffer();
while(ulDataInput != 1){
int i = 2;
while(i <= ulDataInput){
if(ulDataInput%i == 0){
result = result.append(String.valueOf(i)+ " ");
ulDataInput = ulDataInput / i;
i = 1;
}
i++;
}
}
return result.toString();
}
}
由此想到求n以内的全部质数
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
long ulDataInput = scanner.nextLong();
String r = Method.getPrime(ulDataInput);
System.out.println(r);
}
}
}
class Method{
public static String getPrime(long input){
boolean isPrime = true;
TreeSet<Long> al = new TreeSet<Long>();
long i = 2;
//遍历input以内的所有数
while(i<input){
//对每一个被遍历的数判断其是否为质数
for(long j = 2;j < i;j++){//此处可变为j<i/2或,j/math.sqrt(i),
if(i%j == 0){
isPrime = false;
}
}
if(isPrime){
al.add(i);
}
isPrime = true;
i++;
}
return al.toString();
}