컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post C언어] 문자열 비교, 대소문자 구분/구분없이 비교하기 - Compare Strings I...del.icio.us / blogspot.com 등의 한글 인코딩(Encoding)은?C언어] 짝수 홀수 여부 판단; 숫자 짝홀 구하기; Even, Odd NumberBoot disk failure: 우분투를 VMware에 설치할 때 에러 해결 - (VM웨...C언어] (Yes-No) (Y-N) (+Cancel) 선택 묻기 사용자 입력받기 - 예/아...리눅스] 페도라(Fedora)를 VMware에 설치할 때, 운영체제(OS) 선택은?Ubuntu] 우분투 리눅스 비프음 제거하는 법 - Beep(삑삑하는 소리) 없애기C언어] 정규분포, 가우스(Gaussian) 랜덤(난수) 발생 - Gaussian Rand...우분투(Ubuntu)리눅스] root 계정으로 로그인하기, 루트(root) 계정 만들기리눅스] 시스템 종료/리부팅(다시 시작)/로그아웃 명령 - Linux Shutdown Lo...

자바/Java] 소수 찾기/만들기 (素數): Prime Number Generator

Thursday, October 05, 2006

"1"과 "자기 자신"으로만 나누어지는 자연수가 소수(Prime Number)입니다. 사실상 어떤 수로도 나누어지지 않는 수입니다.

2, 3, 5, 7, 11, 13 ...

이렇게 2부터 시작하여 무한히 계속 나타납니다. 소수 중에서는 "2"가 유일한 짝수이고, 다른 소수는 모두 홀수입니다. 따라서 소수를 찾을 때는 우선 2를 적어 놓고, 그 다음부터는 홀수 속에서만 찾으면 됩니다.

아래의 소스는, 소수 찾기 알고리즘 중에서 중간 정도의 속도를 가지고 있습니다.

소수라는 것은 "찾는" 것이고, "만드는" 것이 아니지만 편의상 만들기라고 부릅니다.


소수(Prime Number) 찾기/만들기 예제


파일명: Foo.java
public class Foo {
  public static void main(String argv[]) {

    System.out.println("2\r\n3");

    for (int i = 5; i < 0xFFFFFF; i += 2)
      if (isPrime(i)) System.out.println(i);

  }

  private static boolean isPrime(int number) {
    if (number % 3 == 0) return false;

    int y = 2;
    int x = (int) Math.sqrt(number);

    for (int i = 5; i <= x; i += y, y = 6 - y)
      if (number % i == 0) return false;

    return true;
  }
}



실행 결과:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113

...이하 생략...



화면으로 그냥 출력하면 속도가 느리기에
java Foo > out.txt
이렇게 재지향(Redirection)하여, 결과를 파일로 직접 저장하면 빠릅니다.





이번에는 C로 만들어 보았습니다: ▶▶ C언어] 소수 계산: 소수(素數) 찾기/만들기: Prime Number Generator

☞ 자바(Java)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top