在Python中检查数字是否为阿喀琉斯数字

假设我们有一个数字n;我们必须检查n是否是阿基里斯数。众所周知,当一个强大的数字(一个数字N被称为有功数字,当它的每个素数p都由p ^ 2除以它时,一个数字N称为有功数字)时,它就是一个完美的幂。阿喀琉斯数的一些示例是:72、108、200、288、392、432、500、648、675、800、864、968、972、1125。

因此,如果输入类似于108,则输出将为True,因为6和36都将其相除并且不是完美的平方。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数check_powerful()。这将花费n

  • 虽然n mod 2相同,但是

    • 返回False

    • n:= n / 2

    • p:= p + 1

    • p:= 0

    • 而n mod 2与0相同,则

    • 如果p与1相同,则

    • p:=(n的平方根)的整数+ 1

    • 对于3到p范围内的因子,增加2

      • 返回False

      • n:= n /因子

      • p:= p + 1

      • p:= 0

      • 当n mod因子等于0时,

      • 如果p与1相同,则

      • 当(n等于1)时返回true

      • 定义一个函数check_power()。这将需要

      • 如果a与1相同,则

        • 返回True

      • p:=(n的平方根)的整数+ 1

      • 对于范围2到a中的i,增加1

        • 返回True

        • val:= log(a)/ log(i)[所有基本e]

        • 如果(val-(val)的整数部分)<0.00000001,则

      • 返回False

      • 从主要方法中,执行以下操作-

      • 如果check_powerful(n)与True相同,而check_power(n)与False相同,则

        • 返回True

      • 除此以外,

        • 返回False

      示例

      让我们看下面的实现以更好地理解-

      from math import sqrt, log

      def check_powerful(n):

         while (n % 2 == 0):

            p = 0

            while (n % 2 == 0):

               n /= 2

               p += 1

            if (p == 1):

               return False  

         p = int(sqrt(n)) + 1

         for factor in range(3, p, 2):

            p = 0

            while (n % factor == 0):

               n = n / factor

               p += 1

            if (p == 1):

               return False

         return (n == 1)

      def check_power(a):

         if (a == 1):

            return True

         p = int(sqrt(a)) + 1

         for i in range(2, a, 1):

            val = log(a) / log(i)

            if ((val - int(val)) < 0.00000001):

               return True

         return False

      def isAchilles(n):

         if (check_powerful(n) == True and check_power(n) == False):

            return True

         else:

            return False

      n = 108

      print(isAchilles(n))

      输入项

      108

      输出结果

      True

      以上是 在Python中检查数字是否为阿喀琉斯数字 的全部内容, 来源链接: utcz.com/z/343419.html

      回到顶部