「华为机试质数因子java」华为机试质数因子
今天给各位分享华为机试质数因子java的知识,其中也会对华为机试质数因子进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、编程题,输入一个正整数,输出它的所有质数的因子(如180的质数因子为2、2、3、3、5)
- 2、java输入一个正整数输出它的所有质数的因子~求解答急急急急!
- 3、java:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行
- 4、java输入一个整数,输出其所有素数因子
编程题,输入一个正整数,输出它的所有质数的因子(如180的质数因子为2、2、3、3、5)
import java.util.*;
public class Main{
public static void main(String[]args){
Scanner str=new Scanner(System.in);
long num=str.nextLong();
String result=getResult(num);
System.out.println(result);
}
public static String getResult(long num){
int pum=2;
String result="";
while(num!=1){
while(num%pum==0){
num=num/pum;
result=result+pum+"";
}
pum++;
}
return result;
}
}
扩展资料:
while循环开始后,先判断条件是否满足,如果满足就执行循环体内的语句,执行完毕后再回来判断条件是否满足,如此无限重复;直到条件不满足时,执行while循环后边的语句。简单来讲就是说while循环是先判断后循环, 判断如果满足条件进入循环 本次循环后再次判断 。
举个例子:
do-while循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此do-while循环至少要执行一次循环语句。 简单来讲就是说while循环是先循环后判断 。
举个例子:
总结:while循环是先判断后循环 ,而do–while循环是先循环后判断。
java输入一个正整数输出它的所有质数的因子~求解答急急急急!
按照你的要求编写的Java程序如下:
import java.util.*;
public class Main //主类名称必须为Main
{
public static void main(String[] args) throws Exception
{
Scanner cin=new Scanner(System.in);
System.out.print("请输入一个正整数:");
int n=cin.nextInt();
System.out.print(n+"=");
int count=0;
for(int i=2;i=n;i++){
if(n%i==0){
if(count==0)
System.out.print(i);
else
System.out.print("*"+i);
count++;
n=n/i;
i--;
}
}
}
}
运行结果:
请输入一个正整数:90
90=2*3*3*5
java:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行
程序运行截图:
代码:
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();
// 存储质因子
ListInteger primeList = new ArrayListInteger();
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, ListInteger 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);
}
}
}
java输入一个整数,输出其所有素数因子
import java.util.ArrayList;
import java.util.List;
import java.lang.Math;
public class Solution {
private int num;
private ListInteger primeList;
private int index;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Solution(int num) {
this.num = num;
primeList = new ArrayListInteger();
primeList.add(3);
}
public ListInteger findPrimeContainedList(){
index=0;
int operationNum = num;
ListInteger list = new ArrayListInteger();
int stop = (int) Math.floor(Math.sqrt(operationNum));
if(stop = 2){
return list;
}
operationNum = checkAndRemovePrimeNumber(operationNum,2,list);
stop = (int) Math.floor(Math.sqrt(operationNum));
int p = getNextPrimeNumber();
while(p = stop){
operationNum = checkAndRemovePrimeNumber(operationNum,p,list);
stop = (int) Math.floor(Math.sqrt(operationNum));
p = getNextPrimeNumber();
}
list.add(operationNum);
return list;
}
private int checkAndRemovePrimeNumber(int num,int p,ListInteger resultList){
boolean f = false;
while(num%p == 0){
num/=p;
f = true;
}
if(f){
resultList.add(p);
}
return num;
}
private int getNextPrimeNumber() {
if(this.primeList.size()index++){
return this.primeList.get(index-1);
}
int next = this.primeList.get(this.primeList.size()-1) + 2;
while(true){
int stop = (int) Math.floor(Math.sqrt(next));
boolean f = true;
for(int n: this.primeList){
if(n stop){
break;
}
if(next%n==0){
f = false;
break;
}
}
if(f){
this.primeList.add(next);
break;
}else{
next += 2;
}
}
return next;
}
public static void main(String[] args) {
Solution s = new Solution(123);
System.out.println(s.findPrimeContainedList());
s.setNum(240);
System.out.println(s.findPrimeContainedList());
}
}
好久没写JAVA了。逻辑很简单,做了点优化。
关于华为机试质数因子java和华为机试质数因子的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。