파이썬 알고리즘 - 적은 10 만 이상의 소수를 찾을 수

1 소수를 이용하여 계산을 정의

# - * - 코딩 :. UTF-8 - * - 
# 버전 : python3.7 

'' ' 
   : prime_number 파일 @ 
   @ 저자 : zhangyangyang 
   @ 만들기 : 2020년 3월 22일을 
   발언 @' 
'' 

# 버전 1에 대한 

가져 오기 날짜 # 가져 오기 모듈 계산 효율성
시작 = datetime.datetime.now () COUNT = 0 에 대한 X 범위 (2,100000) : #이 지정된 범위 내에서 소수를 찾기 위해 I 범위 (2, X) : # 1 이외의 그 자체로 나눈 숫자 IF X의 %의 I == 0 : BREAK 다른 : #을인쇄 (X) . COUNT = 1 + 델타 = (datetime.datetime.now () - 시작) .total_seconds () #의 total_seconds () 초 총 수는 인쇄 ( ' COUNT = ' , COUNT, ' 델타 = ' , 델타) # 벽 에 시간 결과 : COUNT = 148.146291 # 9592 델타 매우 비효율적

 

2 최적화 1 계산되고 임계 값 제곱 값

# 버전 2 : 최적화 
가져 오기 날짜 #의 수입 모듈 계산 효율성 시작 = datetime.datetime.now () COUNT = 0 에 대한 X 범위 (2,100000 ) 에 대한 I 범위 (2, INT (X + 0.5 ** 1).) : #의 최적화 1, 테스트 : 임계 값 제곱 값 IF X의 %의 I == 0 : BREAK 다른 : #의 인쇄 (X) COUNT = 1 + 델타 = (datetime.datetime.now () - 시작) .total_seconds ( ) #의 total_seconds () 초 총 수 인쇄 ( ' COUNT = ', COUNT, ' 델타 = ' 델타) 의 실행 결과 COUNT = 9592 = 1.084154 # 델타 효율이 크게 향상

 

3, 최적화 2 :이 명 전체 참여보다 짝수 큰

# 버전 3 : 최적화 + 

가져 오기 날짜     #의 수입 모듈 계산 효율성 
시작 = datetime.datetime.now () 
COUNT = 1.
 # 자신의 2를 인쇄 처음부터 인쇄 (2) # 3 
에 대한 X  범위 (3,100000,2) :                    # 최적화 2 : 3 홀수의 선두로부터 
    # I에 대한 범위 (3, INT (X ** 0.5 + 1).) 최적화 3 : 홀수 아닌 모듈 (2) 
    에 대한 I  범위 (3, INT (X ** 0.5 ) + 2) :    #의 최적화 : 즉, 그렇지 않은 짝수 계수 
        IF X의 %의 I == 0 :
             BREAK 
    다른 :
         #의 인쇄 (X) 
        COUNT = 1 +. 
델타- = (Datetime.datetime.now () 시작) .total_seconds ()     #의 total_seconds () 초 총 수는 
인쇄 ( ' COUNT = ' , COUNT, ' 델타 = ' , 델타)     # 벽 시간 

:의 실행 결과 
COUNT = 9592을 성능을 더욱 향상시키기 위해 델타 = 0.553471 #

 

4 최적화 3 : 5가 5의 배수를 제외한 모든 다중 합성 수 있습니다

# 버전 4 : 최적화 ++ 

가져 오기 날짜     #의 수입 모듈 계산 효율성 
시작 = datetime.datetime.now () 
COUNT = 1.
 # 자신의 2를 인쇄 처음부터 인쇄 (2) # 3 
에 대한 X  범위 (3,100000,2) :                    # 최적화 2 : 3 홀수부터 
    IF X> (10)  X 5 % == 0 :
         계속                               #의 최적화 : 5 제외 배수로 
    #을 범위 I (3, INT (X + 0.5 ** 1)). # 최적화 3 : 홀수 아닌 모듈 (2) 
    에 대한 I  범위 (3, INT (X ** 0.5) + 1,2) :    #의 최적화 : 즉, 그들은 않으며 짝수 계수 
        IF X의 %의 I == 0
             BREAK을
    다른 :
         #의 인쇄 (X) 
        . COUNT = 1 + 
델타 = (datetime.datetime.now () - 시작) .total_seconds ()     #의 total_seconds () 초 총 번호 
인쇄 ( ' COUNT = ' , COUNT, ' 델타 = ' 델타 )     #의 벽에 시간 

결과 : 
COUNT = 9592 = 0.493866 델타

 

5, 품질 응용 프로그램의 수 :

  암호 분야에서의 응용 프로그램은 큰 소수를 사용해야합니다

 

추천

출처www.cnblogs.com/zyybky/p/12551845.html