소수 구하는 알고리즘 1
public class Sosu {
public static void main(String[] args) {
for(int num=2; num <= 1000; num++) {
int i;
for(i=2; i < num; i++) {
if(num % i == 0) {
break;
}
}
if(i == num) {
System.out.println(num);
}
}
}
}
소수 구하는 알고리즘 2
public class Sosu1 {
public static void main(String[] args) {
int counter = 0;
int ptr = 0;
int[] prime = new int[500];
prime[ptr++] = 2;
for(int n=3; n<=1000; n+=2) {
int i;
for(i=1; i < ptr; i++) {
counter++;
if(n % prime[i] == 0) {
break;
}
}
if(i == ptr)
prime[ptr++] = n;
}
for(int i=0; i<ptr; i++) {
System.out.println("prime[" + i + "] = " + prime[i]);
}
System.out.println("나눗셈을 수행한 횟수 : " + counter);
}
}
- 1번으로 실행하여도 문제는 없지만 1번은 모든 숫자를 대입하여 비교하여 소수를 구한다.
- 2번은 for문을 돌 때마다 n값을 +2 해주었다.(짝수는 무조건 나누어 떨어지기 때문에)
안쪽포문 밖에있는 if문은 안쪽 포문에서 결과가 나오지 않는다면 나누어 떨어지지 않는것이고
안쪽포문의 i++증감자를 통해 자기자신과 같으면(ptr == 1) 소수로 인식하여 배열에 저장한다.
'자료구조' 카테고리의 다른 글
String 클래스 (0) | 2020.07.02 |
---|---|
기수 변환 (0) | 2020.07.02 |
배열 b의 모든 요소를 배열 a에 복사 (0) | 2020.07.02 |
배욜요소 역배열 (0) | 2020.07.01 |