java语言 判断质数&&质因数分解
首先清楚质数(素数):
定义为一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数。
那么问题来了,如何判断一个数是否是质数,非质数如何做质因数分解呢?
- 比如:
输入数字是13 那么输出的是13
输入数字是15 输出15=3 * 5
输入数字是18 输出18=2 * 3 * 3
递归思想就用到了
代码如下
下面展示一些内联代码片
。
package suanfati;
import java.util.Scanner;
/**
* @author xxxxx
* @version 1.0
* @description :TODO
* @date 2022/3/24 22:36
*/
public class zhishu {
/**
*@Description 分解质因数
*@Author xx
*@Param * @param num 输入的数字
* * @param count 2
*@Date 2022/3/24 22:40
**/
public static void PrimeNumberSplit(int num,int count)
{
//满足两个条件都是true count++
while (num>count&& num%count!=0)
{
//如果没有公约数则count++ 同时找最小公约数
count++;
}
if (num>count)
{
System.out.print(count+"*");
PrimeNumberSplit(num/count,2);
}
else {
System.out.print(num);
}
}
public static void main(String[] args) {
for (int i = 0; i <2 ; i++) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入数字:");
int num = scanner.nextInt();
if (num<2)
{
System.out.println(0);
}
else {
System.out.print(num+"=");
PrimeNumberSplit(num,2);
}
}}
}
输入数字: 1
结果:0
输入数字:18
结果:18=2*3*3