Java显示数字的素数分解

Java显示数字的素数分解,java,factorization,Java,Factorization,因此,对于我的作业,我必须编写一个程序,要求用户输入一个整数,然后打印出该数字的素数分解。 这就是我所拥有的: import java.util.Scanner; public class PrimeFactor { public static void main(String[] args) { System.out.print("Enter a positive number: "); Scanner scanner = new Scanner (S

因此,对于我的作业,我必须编写一个程序,要求用户输入一个整数,然后打印出该数字的素数分解。 这就是我所拥有的:

import java.util.Scanner;

public class PrimeFactor {
    public static void main(String[] args) {
        System.out.print("Enter a positive number: ");
        Scanner scanner = new Scanner (System.in);
        int number = scanner.nextInt();
        int count;
        for (int i = 2; i<=(number); i++) {
            count = 0;
            while (number % i == 0) {
                number /= i;
                count++;
                if (count == 0) {
                    continue;
                }
            }
            System.out.println(i+ "**" + count);
        }
    }
}
import java.util.Scanner;
公共类素数因子{
公共静态void main(字符串[]args){
System.out.print(“输入正数:”);
扫描仪=新的扫描仪(System.in);
int number=scanner.nextInt();
整数计数;
对于(int i=2;i你很接近:

  • System.out.println语句必须位于for循环内,并且仅显示for
    count>0
  • 删除
    如果(count==0){continue;}
    ,它就没用了,因为您刚刚增加了
    count

  • 就快到了!将
    if continue
    块移到
    for
    循环的外部。否则,它将“继续”最内部的循环,而不是您想要的循环

    while (number % i == 0) {
        number /= i;
        count++;
    }
    if (count == 0) {
        continue;
    }
    System.out.println(i+ "**" + count);
    
    或者,如果(count!=0)
    ,您可以将
    System.out.println
    调用包含在
    中,因为它是
    continue
    后面的唯一语句:

    while (number % i == 0) {
        number /= i;
        count++;
    }
    if (count != 0) {
        System.out.println(i+ "**" + count);
    }
    
    ideone上的程序:。

    从while循环中删除if(count==0){continue;}语句,并将其放在for循环的后面。:)


    for(int i=2;i不确定为什么要打印两次乘法!以下是清理后的代码:

    public static void printPrimeNumbers(int prime) {
    
        int n;
    
        for (int i = 2; i <= prime; i++) {
            n = 0;
            while (prime % i == 0) {
                prime /= i;
                n++;
    
            }
    
            if (n != 0) {
                for (int j = n; j > 0; j--) {
                    System.out.print(i);
    
                    if (prime != 1) {
                        System.out.print("*");
                    }
                }
            }
        }
    }
    
    公共静态空打印素数(int素数){
    int n;
    对于(int i=2;i 0;j--){
    系统输出打印(一);
    如果(素数!=1){
    系统输出打印(“*”);
    }
    }
    }
    }
    }
    
    您也可以从下面的功能中获得一些帮助

    public int getPrimeNumber(double number) {
        int j = 0;
        while (number % 2 == 0) {
            number = number / 2;
            j = 2;
        }
    
        for (int i = 3; i <= number; i = i + 2) {
            while (number % i == 0) {
                number = number / i;
                j = i;
            }
        }
    
        return j == 0 ? 1 : j;
    }
    
    public int getPrimeNumber(双倍数字){
    int j=0;
    而(数字%2==0){
    数量=数量/2;
    j=2;
    }
    
    对于(inti=3;i首先,您的
    continue
    在while循环中,在该循环中没有任何效果

    public class PrimeFactor {
        public static void main(String[] args) {
            System.out.print("Enter a positive number: ");
            Scanner scanner = new Scanner (System.in);
            int number = scanner.nextInt();
            int count;
            for (int i = 2; i<=(number); i++) {
                count = 0;
                while (number % i == 0) {
                    number /= i;
                    count++;
                }
                if (count == 0) {
                     continue;
                }
                System.out.println(i+ "**" + count);
            }
        }
    }
    
    public class\u 03\u最大的基本要素{
    公共静态void main(字符串[]args){
    长a=600851475143L;
    对于(int i=2;i 1)
    System.out.println(“最大素因子:+a”);
    }
    }
    
    控制台:

    8462696833 x 71

    10086647 x 839

    6857 x 1471


    最大素数:6857

    你能使用递归、函数、库类吗?只需要知道你在这里可以使用什么。这个
    continue
    语句不会经常执行…详细解释一下
    public class PrimeFactor {
        public static void main(String[] args) {
            System.out.print("Enter a positive number: ");
            Scanner scanner = new Scanner (System.in);
            int number = scanner.nextInt();
            int count;
            for (int i = 2; i<=(number); i++) {
                count = 0;
                while (number % i == 0) {
                    number /= i;
                    count++;
                }
                if (count == 0) {
                     continue;
                }
                System.out.println(i+ "**" + count);
            }
        }
    }
    
    public class PrimeFactor {
        public static void main(String[] args) {
            System.out.print("Enter a positive number: ");
            Scanner scanner = new Scanner (System.in);
            printFactors(scanner.nextInt());
        }
        public static void printFactors(int product) {
            for (int factor = 2; factor <= product; factor++) {
                int exponent = 0;
                while (product % factor == 0) {
                    product /= factor;
                    exponent++;
                }
                if (exponent > 0) {
                    System.out.println(factor+ "**" + exponent);
                }
            }
        }
    }
    
    public class _03_LargestPrimeFactor {
    
    public static void main(String[] args) {
    
        long a = 600851475143L;
    
        for(int i=2; i<(a/i); i++){                         // no factors would exist beyond a/i for a particular i
    
            while( a%i == 0){                               // if i is a factor 
                a = a/i;                                    // divide a by i else we wont get a prime number
                System.out.print(a + " x " + i + "\n");
            }
        }
    
        if(a > 1)
        System.out.println("largest prime factor: " + a);
    }
    
    }