试除法分解质因数
大体思路:
从2这个质因数开始枚举,将n中所有的2剔除,随后判断质因数3…因为4这种数字被2操作过所以不会再重复出现!所以不必担心枚举出错!
package 素数;
import java.util.Scanner;
public class 试除法分解质因数 {
static int p[]=new int[20];//p[i]表示第i大的质因数是多少
static int c[]=new int[40];//c[i]表示第i大的质因数的个数有多少个
public static void main(String[] args) {
//从2这个质因数开始枚举,将n中所有的2剔除,随后判断质因数3.......因为4这种数字被2操作过所以不会再重复出现!所以不必担心枚举出错!
Scanner sc=new Scanner(System.in);
int m=0;
int n=sc.nextInt();
for(int i=2;i<=Math.sqrt(n);i++) {
if(n%i==0) {
p[++m]=i;
while(n%i==0) {
n/=i;
c[m]++;
}
}
}
if(n>1) {
p[++m]=n;
c[m]=1;
}
System.out.println("共有"+m+"个质因数");
}
}