소수 찾기
2024. 3. 20. 22:13ㆍ멋쟁이사자처럼
입력한 정수까지 모두 체킹을 하며 소수를 찾는 방식
<코드>
import java.util.Scanner;
public class ListPrimes {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요: ");
int num = sc.nextInt();
int cnt = 0;
for (int i = 2; i <= num; i++){
boolean isPrime = true;
for (int j = 2; j < i ; j++){
cnt++;
if (i % j == 0){
isPrime = false;
break;
}
}
if(isPrime == true){
System.out.println(i);
}
}
System.out.println(cnt);
}
}
<설명>
- 입력한 정수까지의 모든 수를 2부터 체킹하는 수-1까지의 모든 수로 나누어 소수인지 판별을 한다
- 이러한 방식은 시간이 오래걸리는 단점이 있음
입력한 정수까지 홀수만 체킹을 하며 소수를 찾는 방식
<코드>
mport java.util.Scanner;
public class ListPrimes2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요: ");
int num = sc.nextInt();
int cnt = 0;
int arrCnt = 0;
int[] primes = new int[500];
primes[arrCnt++] = 2; // 2를 먼저 소수의 배열에 넣어준다.
for (int i = 3; i <= num; i+=2){
boolean isPrime = true;
for (int j = 3; j < i ; j++){
cnt++;
if (i % j == 0){
isPrime = false;
break;
}
}
if(isPrime == true){
System.out.println(i);
}
}
System.out.println(cnt);
}
}
<설명>
- 2를 먼저 소수의 배열 primes에 넣어준다.
- 3부터 입력한 정수까지 홀수만 체킹을 하며 그 사이의 수로 모두 나누며 소수인지 판별한다.
- 위의 코드와 다르게 prime배열에 3을 먼저 넣어주고 5부터 판별해도 된다. (2, 3 모두 소수이기 때문이다.)
'멋쟁이사자처럼' 카테고리의 다른 글
스택 (0) | 2024.03.21 |
---|---|
이진 탐색 (0) | 2024.03.20 |
순차 탐색, 보초법 (0) | 2024.03.20 |
클래스(class) (0) | 2024.03.20 |
다차원 배열의 초기화 (0) | 2024.03.20 |