나는 각 행이 무엇을 설명하기 위해 측면에 의견을 추가했습니다 : (n
의 제곱근까지)
from math import * # imports everything from the math module
def main():
n = abs(input("Enter a number: ")) # gets input from the user
i = 2 # starts off at 2 because all input is divisble by 1
msg = 'is a prime number.' # the message is initially set
while i <= sqrt(n):
if n % i == 0: # if 'i' divides evenly into n
msg = 'is not a prime number.' # only set if it isn't a prime
i = i + 1 # increases 'i' by 1 so it can check every value up to the square-root of 'n' (to see if it divides evenly)
print n, msg
main()
이 프로그램은 i
의 모든 값을 통과하는 모든 가능한 있도록 인자가 확인됩니다.
이 거친 프라임 검사의 종류 및 주요하지 않은 많은 비효율적이다 : 그것은 그 숫자의 제곱근에 모든 숫자까지 반복되며, 입력이 숫자 1234567890
같았다 경우 , 35147
(반올림 됨)입니다. return
문을 사용하면 루프가 끊어 지므로 첫 번째 숫자 인 2
을 확인하면 2
으로 균등하게 나눌 수 있기 때문에 소수가 아닌 것으로 선언됩니다. return
을 사용하면 기능을 중지하고 35,146 개의 계산을 절약 할 수 있습니다. 이는 엄청난 숫자는 아니지만 (적어도 컴퓨터의 경우) 여전히 메모리 효율성이 높으며 시간이 덜 소요됩니다.
def isPrime(n):
'''Checks if 'n' is prime.'''
from math import sqrt
if n == 0 or n == 1:
return False
else:
for check in range(2, int(sqrt(n))+1):
if n % check == 0: return False
return True
귀하의 포괄적 인 답변에 많은 도움이됩니다. – nutship