Python
 Computer >> コンピューター >  >> プログラミング >> Python

乗算がxであり、Pythonで互いに素であるx間のペアの数を見つけるプログラム


(p、q)ペアの数を数える関数f(x)があり、次のようになっているとします。

  • 1

  • pとqは互いに素です
  • p * q =xしたがって、nがある場合。

1からnの範囲のすべてのiの合計f(x [i])を見つける必要があります。

したがって、入力が12の場合、x値は1から12の範囲であるため、出力は3になります。

  • x =6の場合、有効なペアは(2、3)であるため、f(6)=1
  • x =10の場合、有効なペアは(2、5)であるため、f(10)=1
  • x =12の場合、有効なペアは(3、4)であるため、f(12)=1

したがって、合計3つのペアがあります。

これを解決するには、次の手順に従います-

  • count:=0
  • sqr:=(nの平方根)+1の整数部分
  • 2からsqr-1の範囲の塩基については、
    • 範囲1からベースとフロアの最小値(n/ベース-ベース+1)のiの場合、
      • ベースのgcdとi)が1と同じでない場合、
        • 次の反復に進む
      • count:=count + floor of(n --i * base)/(base * base)
  • 返品数

理解を深めるために、次の実装を見てみましょう-

from math import sqrt, gcd

def solve(n):
   count = 0
   sqr = int(sqrt(n)) + 1
   for base in range(2, sqr):
      for i in range(1, min(base, n // base - base + 1)):
         if gcd(base, i) != 1:
            continue
         count += (n - i * base) // (base * base)

   return count

n = 12
print(solve(n))

入力

12

出力

3

  1. 直角三角形の中点と底の間の角度を見つけるPythonプログラム

    直角三角形の2つの辺があり、これらの辺はABとBCであるとします。斜辺ACの中点がMであると考えてください。MとBCの間の角度を見つける必要があります。 したがって、入力がab =6 bc =4の場合、ab / bcのarc_tanは0.9828ですが、度では56.31であるため、出力は56.309932474020215になります。 これを解決するには、次の手順に従います- ans:=arc-tan(ab / bc) 度でansを返す 例 理解を深めるために、次の実装を見てみましょう from math import atan, pi def solve(ab, bc):

  2. Pythonでノードと子孫の違いを見つけるプログラム

    二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノ​​ード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans: