编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子。 例如:如果整数为120, 那么显示的最小因子为 5、3、2、2、2。使用StackOflntegers类存 储因子(例如:2、2、2、3、5), 获取之后按倒序显示这些因子
————————方法块:
import java.util.Arrays;
public class StackOfIntegers {
private int integer;
public StackOfIntegers(int integer) {
this.integer = integer;
}
private static int k = 0;
//存储所有的素数
private static int l = 0;
//存储素数因子
//验证是否为素数
public int[] GetPrime() {
int[] getPrime = new int[this.integer];
//prime下标
boolean isPrime = true;
for (int i = 2; i < this.integer; i++) {
for (int h = 2; h < i; h++) {
if (i % h == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
getPrime[k] = i;
k++;
} else isPrime = true;
}
return getPrime;
}
//计算出所有的素数
public int[] Prime() {
int[] get = GetPrime();
int[] prime1 = new int[k];
boolean judge=false;
while (this.integer != 0) {
for (int a = k - 1; a >= 0; a--) {
if ((int) (this.integer / get[a]) == (double) this.integer / get[a]) {
prime1[l] = get[a];
this.integer /= get[a];
l++;
}
if (integer == get[a] || integer == 1) {
prime1[l] = get[a];
judge=true;
break;
}
}
if (judge)
break;
}
int[] prime=new int[l+1];
for (int i=0;i<l+1;i++){
prime[i]=prime1[i];
}
Arrays.sort(prime);
return prime;
}
}
——————代码块
import java.util.Arrays;
import java.util.Scanner;
public class Exercise10_05 {
public static void main(String[] args) {
System.out.print("Please input a integer :");
Scanner input = new Scanner(System.in);
int integer=input.nextInt();
StackOfIntegers stackOfIntegers = new StackOfIntegers(integer);
int[] a=stackOfIntegers.Prime();
System.out.print("All the prime factors of the "+integer+ " are :");
System.out.print(Arrays.toString(a));
input.close();
}
}