用java编程 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java编程 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。相关的知识,希望对你有一定的参考价值。
java高手们请用较为简便的方法编写
将一个正整数分解质因数。例如:输入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]
参考技术A public static void main(String[] args)int a=0;
Scanner s= new Scanner(System.in);
a=s.nextInt();
yinzi(a);
public static void yinzi(int a)
System.out.print(a+"=");
while(a!=1)
for (int i = 2; i <= a; i++)
if (a % i == 0)
System.out.print(i + " ");
if(a!=i)
System.out.print("*");
a = a / i;
break;
参考技术B 回答
您好亲,我是椅子,很高兴为您解答,您的问题已经收到啦,请耐心等候为您解答~❤️
提问用C语言编写
回答对于一个数,他的质因数必然分布在该数的平方根两侧,而且大于平方根的质因数最多只有一个,且必然是分解到最后所剩余的商。那么,我们只要构造一个循环,从2开始到sqrt(n)结束。判断该数字是否能被正整数整除,将数字分解成因数,就可以啦~
程度怎么写?
回答对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。如果n不能被k整除,则用k+1作为k的值,重复执行第一步
提问你可以写一下程序吗
回答public class Test4
public static void main(String[] args)
System.out.print("请输入一个要分解的正整数:");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
System.out.print(input+"=");
for(int i=2;i<input+1;i++)
while(input%i==0 && input!=i)
input=input/i;
System.out.print(i+"*");
if(input==i)
System.out.print(i);
break;
scanner.close();
运行过的 正确的 参考技术D public class Test4
public static void main(String[] args)
System.out.print("请输入一个要分解的正整数:");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
System.out.print(input+"=");
for(int i=2;i<input+1;i++)
while(input%i==0 && input!=i)
input=input/i;
System.out.print(i+"*");
if(input==i)
System.out.print(i);
break;
scanner.close();
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public class 第四题分解质因数 {
public static void main(String[] args) {
System.out.print("请输入一个正整数进行因数分解:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
if(n < 0) n = -n;
//获取最小质数k
int k = getMinPrime(n);
System.out.print(n+"=");
decompositionFactor(n, k);
in.close();
}
//质因数分解一次
public static int decompositionFactor(int n,int k) {
if(n==k) {
System.out.print(n);
return n;
}
while(n != k) {
if(n>k && n%k==0) {
System.out.print(k+"*");
return decompositionFactor(n/k, getMinPrime(n/k));
}
k++;
}
return n;
}
//判断一个数是否为素数
public static boolean isPrime(int n) {
for(int i=1; i<=Math.sqrt(n); i++) {
if(n == 2) {
return true;
}
//不是素数
if(n % 2 == 0) {
return false;
}
}
return true;
}
//返回一个最小的质数
public static int getMinPrime(int n){
for(int i=2; i<=Math.sqrt(n); i++) {
if(n % i == 0 && isPrime(i)) {
return i;
}
}
return n;
}
}
以上是关于用java编程 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。的主要内容,如果未能解决你的问题,请参考以下文章
java实现:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
Go面试题:将一个正整数分解质因数 (Golang经典编程案例)
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。