Java 分解质因数

Python015

Java 分解质因数,第1张

import java.util.Scanner

public class test{

public static void main(String []args){

10

int n,m=0

Scanner sc = new Scanner(System.in)

System.out.print("input your number:")

n = sc.nextInt()

m = n

boolean f=true

for (int i=2i<=n/2i++) { //判断是否是素数

if (n%i == 0) {

f = false

break

}

}

if (f) {

System.out.println(n + "=1*" + n)

} else {

boolean s = false

int i = 0

while (n >0)

{

for (i=2i<=n/2i++) {

if (n%i == 0) { //如果i是n的因数

f = true

for (int j=2j<=i/2j++) { //判断i是不是素数

if (i%j == 0) {

f = false

break

}

}

if (f) {

if (s) { //如果不是第一次打印

System.out.print("*" + i)

} else { //如果是第一次打印

System.out.print(i)

s = true

}

n /= i

break

}

}

}

if (i >n/2) {

break

}

}

System.out.println("*" + n + "=" + m)

}

}

}

将一个正整数分解质因数。例如:输入60;打印出2*3*5*2

算法实现构思:

1、用Scanner实现输入一个正整数n

2、用一个for循环遍历一个从 k=2开始查找到k<=n的数

3、如果 n%k==0的时候,输出k的值

4、然后把n的值递归一下,即 n=n/k

5、这个时候要把for循环重新执行,即再定义k=2

下面是实现代码:

下面是运行结果

上面是后来整理的构思以及代码实现,一开始拿到这个题目,就立马去做了,可是马上掉进了各种各样的坑,我觉得以后做算法题先把做题思路想好,从部分到整体,不然一道简单的算法题就要耗掉很多时间。

参考资料

CSDN.CSDN[引用时间2018-1-5]