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;
                }
            }
        }
    }
  • 相关阅读:
    ORACLE通过netca配置监听遇到 TNS04415错误
    图说计算机编程简史
    关于在VS2008以下版本的MFC程序使用VS 2008 FeaturePack出现内存泄露的理解
    对话框的OnPaint函数的两种写法的区别
    Hibernate 3.6.0 Beta1
    Hibernate 3.6.0 Beta1
    Maven 与 Checkstyle
    NetBeans 时事通讯(刊号 # 110 Jul 21, 2010)
    NetBeans 时事通讯(刊号 # 111 Jul 28, 2010)
    教育哲学的碰撞
  • 原文地址:https://www.cnblogs.com/zywu/p/5806139.html
Copyright © 2011-2022 走看看