「华为机试质数因子java」华为机试质数因子

博主:adminadmin 2022-11-29 10:03:08 61

今天给各位分享华为机试质数因子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和华为机试质数因子的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。