算法刷题一:质数因子
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z88fFBrb-1641464931788)(https://www.nowcoder.com/equation?tex=1%20%5Cle%20n%20%5Cle%202%20%5Ctimes%2010%5E%7B9%7D%20%2B%2014%20%5C)]
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
解题思路
使用递归算法,先判断分子是否小于分母,如果小于分母直接返回;
如果不小于则判断取模是否等于0:
如果等于0,则输出分母(质因子),分子变为原分子与分母商之后的值,并继续调用方法。
如果不等于0,则分母+1,再调用方法。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
int j = 2;
test(i,j);
}
public static void test(int a,int b){
if(a<b){
return ;
}
if(a%b == 0){
System.out.print(b+" ");
a = a/b;
test(a,b);
}else{
b +=1;
test(a,b);
}
}
}
=1;
test(a,b);
}
}
}