알고리즘

[Python & SQL] 정수 소수 판별기

LeeSeunghyuk 2020. 12. 30. 11:03
반응형

안녕하세요

 

이번 알고리즘은 입력받은 수를 정수와 숫자가 아닌것 , 정수는 소수인지 아닌지 판별하는 알고리즘입니다.

 

소수를 구하는 알고리즘은 이전에 포스팅 했으니 참고하시면 됩니다!

 

 

# 소수 구하는 알고리즘

 

2020/12/29 - [알고리즘] - [Python&SQL] 소수(Prime number) 구하기

 

[Python&SQL] 소수(Prime number) 구하기

안녕하세요 이승혁 입니다. 이번 시간에는 소수(Prime number)를 구하는 알고리즘을 공부해보도록 하겠습니다. ### 소수(Prime number) ? 위키피디아 정의 : 자신보다 작은 두 개의 자연수를 곱하여 만들

lsh-story.tistory.com

 

### Python 정수 소수 판별기

 

숫자를 입력 받습니다.

정규표현식을 사용하기 위해 python library인 re 패키지를 사용합니다.

 

## 정규 표현식은 나중에 따로 포스팅 하도록 하겠습니다! ##

 

문자열에 숫자가 아닌 다른 문자가 있는지 확인하고, 없을경우 소수 판별 함수를 사용합니다.

소수 판별 함수는 약수의 개수로 접근했습니다. 

for문의 범위는 숫자의 제곱근으로 사용했습니다.

# 소수 구하는 함수
def get_prime(data):
    divisor=[i for i in range(1,int(data**(0.5))+1) if data%i==0]
    if len(divisor)>1:
        return print('정수입니다.')
    else:
        return print('정수이고, 소수입니다.')

import re

num=input('숫자를 입력하세요 : ')

if len(re.findall('\D',num))!=0:
    print('숫자가 아닙니다.')
    
else:
    get_prime(int(num))      

### SQL 정수 소수 판별기

 

숫자를 입력 받습니다.

숫자가 아닐 경우를 대비해 char 형태로 입력받습니다.

정규표현식 regexp_instr 사용해 입력받은 자료를 확인합니다.

숫자가 아닌 문자의 위치를 반환하기 위해 [ ^[:digit:] ] POSIX 문자 클래스를 사용했습니다.

 

서브쿼리를 case when절의 else 문에 작성했습니다.

서브쿼리를 통해 약수의 개수가 1개이면 정수이자 소수 , 아니면 정수라고 나타냅니다.

 

accept num char prompt '숫자를 입력하세요~'
select case when regexp_instr('&&num','[^[:digit:]]') > 0 then '숫자가 아닙니다.'
        else (select case when count(*) = 1 then '정수이며 소수입니다'
                          else '정수입니다.' end as 판별
               from dual
               where mod(to_number('&&num'),level)=0
               connect by level<=(to_number('&num')-1)) end 판별
from dual;

좌 : 17 입력                                                                           우 : 17ㅁ 입력

 

 

 

 

#####

소수 구하는 방법, 약수 구하는 방법 등은 이전 포스팅에 있으니 따로 

언급하지 않도록 하겠습니다!

 

SQL 정규식과 Python 정규식에 관한 포스팅도 곧 진행하도록 하겠습니다.

감사합니다!

반응형