>  기사  >  백엔드 개발  >  Python에서 소수(소수)를 결정하는 간단한 방법에 대한 자세한 설명

Python에서 소수(소수)를 결정하는 간단한 방법에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-06 13:25:255100검색

소수는 소수라고도 합니다. 1과 정수 그 자체를 제외한 다른 자연수로 나누어지지 않는 1보다 큰 자연수를 말한다. 소수는 정수론에서 중요한 역할을 합니다. 1보다 크지만 소수가 아닌 수를 합성수라고 합니다. 1과 0은 소수도 아니고 합성수도 아니다. 소수는 합성수와 반대되는 두 가지 개념으로 정수론에서 가장 기본적인 정의 중 하나입니다. 골드바흐의 추측 등 소수의 정의에 기초한 세계적 수준의 문제가 많이 있습니다. 산술의 기본 정리는 1보다 큰 모든 양의 정수는 소수의 곱으로 쓰여질 수 있으며 이 곱의 형태는 독특하다는 것을 증명합니다. 이 정리의 중요한 점은 소수의 집합에서 1이 제외된다는 것이다. 1이 소수로 간주되면 이러한 엄격한 공식에는 몇 가지 제한 사항이 적용되어야 합니다. 며칠 전에 친구가 가끔 Python에 소수를 결정하는 방법을 물었고, 나는 온라인에서 숫자가 소수인지 확인하는 Python 스크립트의 여러 가지 방법을 요약했습니다.

1. 수학 함수

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)] ]

파이썬의 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

모듈을 사용하지 않는 두 가지 방법
방법 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
….

파이썬에서 소수를 결정하는 간단한 방법에 대한 자세한 설명은 (소수), PHP 중국어 홈페이지를 주목해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.