题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
函数接口说明:public String getResult(long ulDataInput)
输入参数:long ulDataInput:输入的正整数
返回值:String
输入描述:输入一个long型整数
输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
思路一:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
long input = scanner.nextLong();
String string = getResult(input);
String[] strings = string.split(" ");
for (String s: strings)
System.out.print(Integer.valueOf(s) + " ");
}
}
public static String getResult(long ulDataInput)
{
String res = "";
for (int i = 2; i <= ulDataInput; i++)
{
if (ulDataInput % i == 0 && isPrime(i)) {
res += i + " ";
res += getResult(ulDataInput / i);
break;
}
}
return res;
}
public static boolean isPrime(int num)
{
if (num == 1)
return false;
for (int i = 2; i < num; i++)
if (num % i == 0)
return false;
return true;
}
}
思路二:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
long input = scanner.nextLong();
isPrimeFactors(input);
}
}
public static void isPrimeFactors(long ulDataInput)
{
long num = ulDataInput;
while (num != 1)
{
for (int i = 2; i <= num; i++)
{
if (num % i == 0)
{
System.out.print(i + " ");
num /= i;
break;
}
}
}
}
}