zoukankan      html  css  js  c++  java
  • 质数因子

    题目描述

    功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )

    最后一个数后面也要有空格
     详细描述:

    函数接口说明:

    public String getResult(long ulDataInput)

    输入参数:

    long ulDataInput:输入的正整数

    返回值:

    String

    输入描述:

    输入一个long型整数

    输出描述:

    按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

    输入例子:
    180
    
    输出例子:
    2 2 3 3 5
    循环法:
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while(in.hasNext()) {
                long ulDataInput = in.nextLong();
                System.out.println(getResult(ulDataInput));
            }
        }
        
        public static String getResult(long ulDataInput) {
            int pum = 2;
            StringBuffer result = new StringBuffer();
            while(ulDataInput != 1) {
                while(ulDataInput % pum == 0) {
                    ulDataInput = ulDataInput / pum;
                    result.append(pum);
                    result.append(' ');
                }
                pum ++;
            }
            String s = new String(result);
            return s;
        }
    }

     递归法:

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
    
            while (in.hasNext()) {
                int num = in.nextInt();
                getResult(num);
            }
        }
        
        private static void getResult(int num) {
            // 终止条件
            if (num == 1) {
                return;
            }
            int pum = 2;
            while (num != 1) {
                if (num % pum == 0) {
                    System.out.print(pum);
                    System.out.print(" ");
                    getResult(num / pum);
                    break; // 一定要跳出来
                }
                pum++;
            }
    
        }
    }

     递归改进:

    public class Main {
        public static void main(String[] args) {
            int a = 5;
            getResult(a);
        }
    
        private static void getResult(int a) {
            for(int i = 2; i <= a; i++) {
                if(a == i) {
                    System.out.print(i);
                    return;
                } 
                if((a > i) && (a % i == 0)) {
                    System.out.print(i + " ");
                    a = a / i;
                    getResult(a);
                    break;
                }
            }
        }
    }
  • 相关阅读:
    awk中使用shell变量
    awk的getline命令
    awk的逻辑运算符
    python之re模块
    转载:ensemble计划和数据库
    正则表达式的符号
    awk之match函数
    bash脚本之读取数据
    samtools+bcftools 进行SNP calling
    win10 系统上运行tensorflow三层卷积的方式
  • 原文地址:https://www.cnblogs.com/zywu/p/5806139.html
Copyright © 2011-2022 走看看