ホームページ  >  記事  >  バックエンド開発  >  Pythonで素数(素数)を求める簡単な方法を詳しく解説

Pythonで素数(素数)を求める簡単な方法を詳しく解説

高洛峰
高洛峰オリジナル
2017-03-06 13:25:255041ブラウズ

素数は素数とも呼ばれます。 1 より大きく、1 と整数自体を除く他の自然数で割り切れない自然数を指します。素数は整数論において重要な役割を果たします。 1より大きいが素数ではない数を合成数と呼びます。 1 と 0 は素数でも合成数でもありません。素数は合成数に対置される 2 つの概念であり、数論における最も基本的な定義の 1 つを構成します。ゴールドバッハ予想など、素数の定義に基づく世界レベルの問題は数多くあります。算術の基本定理は、1 より大きいすべての正の整数は素数の積として記述できること、およびこの積の形式が一意であることを証明しています。この定理の重要な点は、素数の集合から 1 が除外されていることです。 1 が素数とみなされる場合、これらの厳密な公式にはいくつかの制限を課す必要があります。 数日前、友人が時々 Python に素数を決定する方法を尋ねました。私はオンラインで調べて、数値が素数であるかどうかを決定するための Python スクリプトのいくつかの方法をまとめました。

1 Python の数学関数を使用します。

import math 

def isPrime(n): 
  if n <= 1: 
  return False 
  for i in range(2, int(math.sqrt(n)) + 1): 
  if n % i == 0: 
    return False 
  return True

2. 素数をスキャンする単一行プログラム

from math import sqrt 
N = 100 
[ p for p in  range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]

Pythonのitertoolsモジュールを使用する

from itertools import count 
def isPrime(n): www.php.cn
  if n <= 1: 
    return False 
  for i in count(2): 
    if i * i > n: 
      return True 
    if n % i == 0: 
      return False

3. モジュールを使用しない2つの方法。

方法 1:

def isPrime(n): 
  if n <= 1: 
    return False 
  i = 2 
  while i*i <= n: 
    if n % i == 0: 
      return False 
    i += 1 
  return True

方法2:

def isPrime(n): 
  if n <= 1: 
    return False 
  if n == 2: 
    return True 
  if n % 2 == 0: 
    return False 
  i = 3 
  while i * i <= n: 
    if n % i == 0: 
      return False 
    i += 2 
  return True

例: 20001と40001の間の素数(素数)を見つけてください


それは1またはそれ自身でしか割りられないので、余りが0になる2回だけ

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。