• 技术文章 >Python技术 >Python基础教程

    python怎么求因数

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-09-23 16:13:39原创14409

    要想做到python语言求因数方法,首先要明白其中的原理:

    1、对由123456789这九个数字组成的9位数进行分解质因数。

    2、123457698=2x3x3x7x13x23x29x113,所以他的值因数是113。

    3、总共有362880种可能,从中找出值因数中最小的数字和值因数中数。

    相关推荐:《Python入门教程

    好了,下面来看看python语言求因数方法的实现源码:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    #coding:utf-8

      

    import math

      

    def generator(count, s):

        if count == 1:

            for i in s:

                yield i

        else:

            for i in s:

                _ = set(s)

                _.remove(i)

                for _ in generator(count-1, _):

                    yield _ * 10 + i

      

    primes = [2, 3]

    def prime(idx):

        if idx < len(primes):

            return primes[idx]

        new = primes[-1]+2

        while True:

            for i in primes:

                if new % i == 0:

                    break

            else:

                primes.append(new)

                break

            new += 2

        return prime(idx)

      

    def probe(number, idx, value=0):

        if value > number:

            return value

        p = prime(idx)

        sqrt = math.sqrt(number)

        while number % p != 0 and sqrt >= p:

            idx += 1

            p = prime(idx)

        if sqrt < p:

            return number

        return probe(number/p, idx, max(p, value))

    if __name__ == '__main__':

        _min = 10000000000, 10000000000

        _max = 0, 0

        for number in generator(9, set(range(1, 10))):

            maxfactor = probe(number, 0)

            if maxfactor < _min[0]:

                _min = maxfactor, [number]

            elif maxfactor == _min[0]:

                _min[1].append(number)

            if maxfactor > _max[0]:

                _max = maxfactor, [number]

            elif maxfactor == _max[0]:

                _max[1].append(number)

        print _min

        print _max

    专题推荐:python 因数
    上一篇:python reload找不到怎么办 下一篇:python怎么调用cmd命令

    相关文章推荐

    • python怎么写代码• python中list怎么合并

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网