先提出一些概念:
因数:一个数,如果存在可以被它整除的数,则这些数都是该数的因数。
规定0没有因数,1的因数是1,其他的比如4的因数有“1”、“2”、“4
因子:一个数,如果存在可以被它整除的数且这些数不包括它本身,则这些书都是该数的因子。
规定0没有因子,1的因子是1,其他的比如4的因子有“1”、“2”
//输入一个数,输出这个数的所有因子,并返回因子的个数
int getFactors(int n){
int count = 0;
if(n == 0)
return count;
else {
System.out.print(1+" ");
for(int i = 2; i <= Math.sqrt(n); i++){
if(n % i == 0){
System.out.print(i+" ");
System.out.print(n/i+" ");
count += 2;
}
}
return ++count;
}
接下来计算两个数的公因子
//输入两个数,输出它们的公因子,并返回个数
//先求两个数的最大公约数
//若最大公约数为两个数其中的一个,则求它的因子时不包括它自己,否则就包括
int getAllFactors(int m,int n){
int count = 0;
if(m ==0 || n ==0)
return count;
else{
//调用最大公约数函数
int gGCM = Tools.getGreatestCommonMeasure_2(m, n);
if(gGCM == 0){
return gGCM;
}else if(gGCM == 1){
System.out.println(1+" ");
return gGCM;
}else{
System.out.print(1+" ");
if(gGCM != n && gGCM != m){
count++;
System.out.print(gGCM +" ");
}
for(int i = 2; i <= Math.sqrt(gGCM); i++){
if(gGCM % i == 0){
System.out.print(i+" ");
System.out.print(gGCM/i+" ");
count += 2;
}
}
}
return ++count;
}
}