하나하나 다 검사하기에는 비효율적이고 대칭을 이루기 때문에 특정한 숫자의 제곱근까지만 검사하면 된다.
ex)
소수면 True, 소수가 아니면 False를 출력
def isPrimeNumber(x):
end=int(x**.5)
for i in range(2,end):
if x%i==0:
return False
return True
print(isPrimeNumber(97))
True
자기자신은 지우지 않는다.
자기자신은 지우지 않는다.
number=100
a=[0]*101
def isPrimeNumber():
for i in range(2,number+1): #그냥 배열에 숫자 채워넣기
a[i]=i
for i in range(2,number+1): #0이면 넘기기
if a[i]==0:
continue
for j in range(i+i,number+1,i): #자기 자신이 아닌 배수는 0으로 바꾸기
a[j]=0
for i in range(2,number+1): #0이 아닌 수를 출력
if a[i]!=0:
print(a[i])
isPrimeNumber()
>>> 2
3
5
7
.
.
.
79
83
89
97