zoukankan      html  css  js  c++  java
  • 质因数分解算法

    首先介绍质数,及只能被1和自己整除的数。

    任何一个自然数都能够分解成质数的乘积,比如100=2*2*5*5,  9990=2*3*3*3*5*37。

    我的算法非常简单,以下是主要步骤:

    1、现有一个待分解的数假设是n(n>2),拿这个数不断的去除i(i的初始值为2且递增,2<i<n,当然为了优化算法也可以将i的取值范围限制为2<i<=n/2,举个例子,100要能整除一个数,这个数要是超过了100的一半50,还怎么整除),n除i之前先判断i是否满足前面括号内的条件,要是满足就除,要是不满足就结束;

    2、将整除后的值重复步骤1(递归调用);

    废话不说,直接上代码:

    class Program
        {
    
            static void Main(string[] args)
            {
                try
                {
                    int a = Convert.ToInt32(Console.ReadLine());
                    fun(a);
                }
                catch (Exception)
                {
                    Console.WriteLine("输入不合法!");
                }
    
            }
    
            private static void fun(int a)
            {
                for (int i = 2; ; i++)
                {
                    if (a > i)//这里可以坐下优化工作
                    {
                        if (a % i == 0)
                        {
                            Console.WriteLine(i);
                            a = a / i;
                            fun(a);//递归调用
                        }
                    }
                    else
                    {
                        Console.WriteLine(a);
                        Environment.Exit(0);
                    }
                }
            }
        }
  • 相关阅读:
    2019-05-07
    2019-04-28 问题记录
    2019-04-15 python深浅复制
    2019-04-11 统计日志重复数量
    2019-03-23 shell练习,日志统计
    问题记录2019-03-12
    问题记录2019-03-06(todo)
    回归
    Mac进行 usr/bin 目录下修改权限问题,operation not permitted
    个人的随笔心情
  • 原文地址:https://www.cnblogs.com/xiaoxueyong/p/5278976.html
Copyright © 2011-2022 走看看