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

与えられた番号がPythonでEuclid番号であるかどうかを確認します


数nがあるとします。 nがユークリッド数であるかどうかを確認する必要があります。私たちが知っているように、ユークリッド数は整数であり、

として表すことができます

n =P n +1

ここで、は最初のn個の素数の積です。

したがって、入力がn =211のような場合、出力はTrueになります。nは

として表すことができます。

211 =(2×3×5×7)+1

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

  • MAX:=10000
  • primes:=新しいリスト
  • 関数generate_all_primes()を定義します。これには時間がかかります
  • prime:=サイズMAXのリストとTrueで埋める
  • x:=2
  • x * x
  • prime [x]がTrueの場合、
    • x * 2からMAXの範囲のiの場合、各ステップでxずつ更新します。
      • prime [i]:=False
    • x:=x + 1
  • 2からMAX-1の範囲のxについては、
    • prime [x]がtrueの場合、
      • 素数の最後にxを挿入
  • メインの方法から次の手順を実行します。
  • generate_all_primes()
  • mul:=1、i:=0
  • mul
  • mul:=mul*素数[i]
  • mul + 1がnと同じ場合、
    • Trueを返す
  • i:=i + 1
  • Falseを返す
  • 理解を深めるために、次の実装を見てみましょう-

    サンプルコード

    MAX = 10000
    primes = []
     
    def generate_all_primes():
       prime = [True] * MAX
     
       x = 2
       while x * x < MAX :
          if prime[x] == True:
             for i in range(x * 2, MAX, x):
               prime[i] = False
          x += 1
    
       for x in range(2, MAX):
          if prime[x]:
             primes.append(x)
    
    def solve(n):
       generate_all_primes()
       mul = 1
       i = 0
     
       while mul < n :
          mul = mul * primes[i]
          if mul + 1 == n:
             return True
          i += 1
       return False
    
    n = 211
    print(solve(n))

    入力

    211

    出力

    True

    1. PythonでNが二面素数であるかどうかを確認します

      数nがあるとします。 nが二面素数であるかどうかを確認する必要があります。数自体が素数であり、ディスプレイの向き(通常または上下逆)に関係なく、7セグメントディスプレイを使用して同じ数または他の素数が表示される場合、その数は二面素数であると言われます。 したがって、入力がn =1181のような場合、出力はTrueになります 2つ目は、1つ目の逆さまの形式で、どちらも素数です。 これを解決するには、次の手順に従います- 関数up_side_down()を定義します。これにはnがかかります temp:=n、total:=0 0の場合、do d:=temp mod 10

    2. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

      無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります