题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
输入例子:
180
输出例子:
2 2 3 3 5
循环法:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()) { long ulDataInput = in.nextLong(); System.out.println(getResult(ulDataInput)); } } public static String getResult(long ulDataInput) { int pum = 2; StringBuffer result = new StringBuffer(); while(ulDataInput != 1) { while(ulDataInput % pum == 0) { ulDataInput = ulDataInput / pum; result.append(pum); result.append(' '); } pum ++; } String s = new String(result); return s; } }
递归法:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { int num = in.nextInt(); getResult(num); } } private static void getResult(int num) { // 终止条件 if (num == 1) { return; } int pum = 2; while (num != 1) { if (num % pum == 0) { System.out.print(pum); System.out.print(" "); getResult(num / pum); break; // 一定要跳出来 } pum++; } } }
递归改进:
public class Main { public static void main(String[] args) { int a = 5; getResult(a); } private static void getResult(int a) { for(int i = 2; i <= a; i++) { if(a == i) { System.out.print(i); return; } if((a > i) && (a % i == 0)) { System.out.print(i + " "); a = a / i; getResult(a); break; } } } }