求一个Java分解质因数方法

Python014

求一个Java分解质因数方法,第1张

import java.util.Scanner

public class Try

{

static boolean is_odd(int n)

{

if(n==2||n==3) return true

if(n%2==0) return false

int i

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

if(n%i==0) return false

return true

}

public static void main(String[] args)

{

Scanner in=new Scanner(System.in)

System.out.println("输入数值")

int n=in.nextInt()

int i

System.out.print(n+"=")

for(i=2i<=ni++)

{

if(!is_odd(i)) continue

if(n%i==0)

{

while(true)

{

System.out.print(i)

n/=i

if(n!=1) System.out.print("*")

if(n%i!=0) break

}

}

}

System.out.println()

}

}

要给分啊!!!

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)

}

}

}