수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

소수 구하기에 대하여...

밝은빛누리예

2023.04.01

가입 후 덧글을 올려야 글을 올릴 수 있다고 해서 덧글을 어디에 올려야 하나 찾던 중...
소수 구하기에 대한 글들을 읽어봤습니다.
대부분은 1부터 n 까지, 혹은 n/2 까지의 수를 나누어서 판별하던데...(뭐 하나하나 다 살펴보진 않았습니다.)
얼마 전 책에서 소수 구하기 소스를 보니까 1부터 √n 까지의 정수만 나누어서 판별하더군요.
혹시 나중에 소수 구하는 코드를 짜려고 하는데 어려움이 있는 분들이 계실 때 참고할 자료를 하나 더 추가하는 의미에서...
이 글을 올립니다.

네이버 백과사전에도 소수에 대한 내용을 보면 다음 내용이 있습니다.
자연수 n이 소수인지 아닌지를 판정하려면, 2≤p≤ √n인 범위에 있는 모든 소수 p로 n을 나누어 보아,
나누어지지 않으면 소수이고, 나누어지면 합성수이다.

잘 이해가 안가더라구요. 왜? √n 까지만 나누어보면 되는가??
n/2 까지만 나누어 보면 된다는 거는 금방 이해가 가는데 말이죠.
어떤 수의 약수 중 최소는 2 이고 최대는 n/2이니까요.

연습장에 막 끄적거리면서 생각하던 중 옛생각(?)이 났습니다.
초등학교 때 속셈학원에서 배운 기억에는, 두 개씩 짝을 지어 약수를 구했습니다.
아마도 누구나 그렇게 배웠겠지요?
연습장에 가운데 줄을 그어 왼쪽 편 오른쪽 편 나눈 다음,
2부터 나누어가면서 나누어지면 왼쪽 편의 왼쪽부터 그 수를 쓰고 오른쪽 편의 오른쪽부터 나눈 값을 써나가지요...
만약 120 의 약수를 구한다 치면...
2| 60
2,3 | 40,60
2,3,4 | 30,40,60
2,3,4,5| 24,30,40,60
2,3,4,5,6| 20,24,30,40,60
2,3,4,5,6,8 | 15,20,24,30,40,60
2,3,4,5,6,8,10 | 12,15,20,24,30,40,60
이런 식으로 했습니다.

다시 생각해보면, n 의 약수들은 서로 곱해서 n 이 나오는 수들의 집합이란 얘긴데...
위와 같이 왼쪽 편에 있는 수, 오른쪽 편에 있는 수를 나누어본다면
왼쪽 편에 있는 수 중 가장 큰 수 a 는 오른쪽 편에 있는 수 중 가장 작은 수보다 작거나 같고...
또한 a 는 √n 보다 절대로 클 수가 없습니다.

√n에서 소수점을 버린 수가 a 라고 한다면...
n 은 a^2 과 (a+1)^2 사이의 수일 것입니다.
만약 n 의 약수를 구했더니 왼쪽 편에 있는 약수 중 a+1 이 있다고말한다면,
그 말은 오른쪽 편에 a+1 과 같거나 더 큰 수가 있어야 한다는 말인데,
그렇게 되면 그것을 약수로 갖는 수가 (a+1)^2 이상이라는 얘기고, 그렇다면 그건 n 보다 큰 수가 되니까...
결국 왼쪽 편에 있는 약수 중 a+1 이 있다는 말은 거짓이 됩니다.

말하자면...n 의 약수를 구할 때는 2 부터 √n 까지의 수만 나누어보면 됩니다.
그러면 나머지 약수는 자연히 구해지게 되는 것이구요.
그렇다면 소수인지 아닌지 판별할 때도 마찬가지로 하면 된다는 뜻이 되겠죠...
2 부터 √n 까지의 수를 나누어봐서 하나도 나누어지지 않는다면 그건 소수...아니면 합성수...

여기까지 그냥 저 혼자 멋대로 생각해본 것이구요...
혹시 그럴듯하게 제대로 수학적 증명을 하려면 어떻게 해야 하는지 아시는 분 계시면 답글 좀 달아주세요...PS :
양의 제곱근 구하는 메서드 - Math 클래스의 sqrt(double a) 메서드.
예) 246 의 제곱근에서 소수점 버린 정수a구하기 :
inta = (int)Math.sqrt(246);
System.out.println(a);
실행 결과 = 15

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 연꽃

    ㄷㄷ

  • Soeun

    헉! 너무 어려워서 모르겠어요 ㅠ_ㅠ

번호 제 목 글쓴이 날짜
2699547 [급]레이어보다 object태그가 우선순위가 되는 문제 (5) DevilsTears 2025-06-27
2699518 javaScript중복체크 하는법좀.. 알려주세요 (3) 비 2025-06-26
2699495 이런 탭메뉴를 뭐라고 해야 하는지 모르겠네요 (1) 들빛 2025-06-26
2699380 메뉴가 계단식으로 나타나요.. ㅠ.ㅠ (5) 스릉흔다 2025-06-25
2699354 영문 웹폰트 관련 질문입니다!!! (1) 치킨마루 2025-06-25
2699329 윈도우 미디어 플레이어 URL 질문!!! (1) 제철 2025-06-25
2699296 동영상 배경 질문드려요!!!!!!!!!!!!!! 핫파랑 2025-06-24
2699214 position:fixed 에 대한 질문입니다.. (7) 사이 2025-06-24
2699183 제이쿼리 이미지 슬라이드 위치값 수정 초엘 2025-06-23
2699153 테마[ADORABLE]에서 페이지생성시 하위페이지는 2개밖에 안되나요? 흰여울 2025-06-23
2699129 네이버 블로그 또는 사이트의 글을 불러오기 갤원 2025-06-23
2699070 탭메뉴처럼 셀렉트 박스를 이용해서 내용을 출력할 수 있는 방법이 있을까요. (3) 큰꽃늘 2025-06-22
2699016 인터넷이 안되는 환경에서 validator설치방법 (3) 은송이 2025-06-22
2698988 대체 C++ 6.0 exe 아이콘은 어떻게 넣는건가요? 외국녀 2025-06-22
2698960 음성파일을 embed로 작업했는데..웹 표준코딩으로 변경하려면 어떻게 해야하나요? (1) 잎새 2025-06-21
2698932 메뉴목록 풍선창 만들기 html (2) 하늘이 2025-06-21
2698901 http://www.zeitgeistbot.com/ 이 사이트처럼 움직이는 효과를 무엇이라고 하나요? 누림 2025-06-21
2698876 table width값 크로스브라우징에 대한 문의 (2) 볼수록매력 2025-06-21
2698849 c언어 질문. (3) 아름나 2025-06-20
2698823 setInterval 이벤트 제거 하려면... 가온길 2025-06-20
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com