소수는 소수라고도 합니다. 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 ….