ホームページ  >  記事  >  バックエンド開発  >  Pythonを使って素数(素数)を求める簡単な方法

Pythonを使って素数(素数)を求める簡単な方法

高洛峰
高洛峰オリジナル
2017-03-02 17:32:2825606ブラウズ

この記事では主にPythonを使って素数(素数)を求める簡単な方法を紹介します。科学技術計算によく使われるPythonは、もちろんこのような小さな問題にも簡単に対応できます^_-困っている友達は参考にしてください

素数は素数とも呼ばれます。 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.jb51.net
  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回のとき、コードは以下の通り:


#!/usr/bin/python

L1=[]
for x in xrange(20001,40001):
 n = 0
 for y in xrange(1,x+1):
 if x % y == 0:
  n = n + 1
 if n == 2 :
 print x
 L1.append(x)
print L1

結果は以下の通り:

20011
20021
20023
20029
20047
20051
20063
20071
20089
20101
20107
20113
20117
20123
20129
20143
20147
20149
20161
20173
….

Pythonを使って素数(素数)を求めるもっと簡単な関連記事はこちら、PHP 中国語 Web サイトに注意してください。

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