按照你的要漏余求编写的Java程序如下:
import java.util.Scannerpublic class CCT{
public static void 局搜改f(int n,int m){
int i=2
if(n<2)return
while(!(n%i==0)){
i++
}
if(m==1)System.out.print(i)
else System.out.print("*"+i)
f(n/i,m-1)
return
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in)
桐判 int n=sc.nextInt()
System.out.print(n+"=")
f(n,1)
System.out.println()
}
}
运行结果:
90
90=2*3*3*5
public class Test {/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int num=40//测试数据漏扮掘,你也可返核以用Scanner获取输入数据,但是为了方便
for(int i=2i<=numi++){
while(num!=i){
if(num%i==0){
System.out.println("质因数是:"+i)
num=num/i
}
else
break
}
}
System.out.println("质因数是:缺者"+num)
}
}
程序运行截图:
代码:
public class Test {public static 型帆知final void main(String[] args) {
// 质数(prime number)又称素数
// 对n进行分解质因数,应先找到一个最小的质数k
System.out.println("该程序实现一个正整数分解质因子")
System.out.println("请输入一个正整数:")
Scanner scanner = new Scanner(System.in)
int n = Integer.valueOf(scanner.nextLine())
System.out.println("n = " + n)
Test localTest = new Test()
// 存储质因子
List<Integer> primeList = new ArrayList<Integer>()
localTest.factorizationIntoPrimeNumbers(n, primeList)
System.out.print("n = ")
for (int i = 0 i < primeList.size() i++) {
if (i == 0) {
System.out.print(primeList.get(i))
} else {
System.out.print("*" + primeList.get(i))
}
}
}
private void factorizationIntoPrimeNumbers(int n, List<Integer> primeList) {
// n的最卜消小质数
int minPrime = 0
boolean flag = true
// 查询n中的质数
for (int i = 2 i <= n && flag i++) {
for (int j = 2 j <= i j++) {
if (j == i) {// j是质数
if (n % j == 0) {// j是轿羡n的质因子
minPrime = j
flag = false
break
}
} else if (i % j == 0) {// j不是质数
break
}
}
}
if (minPrime == n) {// 这个质数恰等于n,则说明分解质因数的过程已结束,打印出即可
System.out.println("质因子:" + n)
primeList.add(minPrime)
} else if (minPrime != 0) {// n的最小质因子
System.out.println("质因子:" + minPrime)
primeList.add(minPrime)
factorizationIntoPrimeNumbers(n / minPrime, primeList)
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)