java将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
首先我们的算法是:例如 输入的是 90
1.找到90的最小公约数(1除外)是 2
2.然后把公约数 2 输出
3.接着用 90 / 2 = 45 (如果这里是素数,就结束,否则继续找最小公约数)
4.找到45 的最小公约数 (最小公约数是 3)
5.输出 3 接着重复第3步………..(反正只要第3步是素数,就结束掉)
话不多说,都在代码里了。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
//输入
System.out.println(“请输入一个大于3的数:”);
int number = input.nextInt();
fengjie(number);
}
public static void fengjie(int j){
for(int i=2;i<Math.sqrt(j);i++){
//这个if是找最小公约数
if(j%i == 0){
System.out.print(i+”*”);
//这个if是判断他是不是素数,如果是素数,就将这个数输出,然后就执行break;了
if(isPrime(j/i)){
System.out.print(j/i);
}
else
//如果不是素数,就继续分解,找公约数
fengjie(j/i);
break;
}
}
}
//判断是否是素数
public static boolean isPrime(int n){
for(int i=2;i<Math.sqrt(n);i++)
{
if(n%i == 0)
return false;
}
return true;
}
觉得这个题目应该对于初学者来说有一点小小的帮助
要是有哪里写错了,或者哪里不懂的地方的地方,可以给我留言,我会改正,谢谢大家。