• 质数因子


    题目描述

    功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如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;
                }
            }
        }
    }
  • 相关阅读:
    ckeditor添加自定义按钮整合swfupload实现批量上传图片
    H5移动端适配之px转vw(附工具)
    原生js实现复制文本到粘贴板
    快速删除项目中的输出日志console.log
    toString和valueOf使得对象访问时显示一个特定格式的字符串,但是可以进行数字运算
    __defineGetter__和__defineSetter__在日期中的应用
    观察者模式(订阅-发布者模式)
    原生js扫雷代码
    身份证验证思路及代码
    IMEI校验思路及代码
  • 原文地址:https://www.cnblogs.com/zywu/p/5806139.html
Copyright © 2020-2023  润新知