1000까지 소수를 구해보자
버전 1) 총 연산횟수는 78022
public class PrimeNumber1 {
public static void main(String[] args) {
int count=0;
second: for(int i=2;i<=1000;i++){
for(int j =2; j<=i-1; j++){
count++;
if(i%j==0){
continue second;
}
} //2for end
System.out.println(i);
}// 1 for end
System.out.println("총 연산횟수는 "+count);
}
}
버전 2) 총 연산횟수는 3774
소수를 배열prime에 넣어준다.
prime배열의 값으로 나누어지지 않으면 소수라고 판단하고, prime배열에 추가해준다.
홀수만 연산. 짝수는 연산에 제외 & 2로 나누는 연산은 제외.
public class PrimeNumber1 {
public static void main(String[] args) {
int count = 0;
int ptr = 0;
int[] prime = new int[500];
prime[ptr++] = 2;
System.out.println(2);
prime[ptr++] = 3;
System.out.println(3);
for(int n = 5; n <=1000; n=n+2){
int i;
boolean flag = true;
for(i=1;(prime[i]!=0)&&(prime[i]*prime[i]<=n);i++){
count +=2;
if(n%prime[i]==0){
flag= false;
break;
}
}
if(flag){
prime[ptr++] = n;
count++;
System.out.println(n);
}
}
System.out.println("총 연산횟수는"+count);
}
}
'CS > 알고리즘' 카테고리의 다른 글
하노이의 탑 (0) | 2023.10.27 |
---|---|
시간 계산하기(손코딩) (0) | 2023.10.20 |
재귀함수와 반복문의 차이점 (0) | 2023.10.19 |
중앙값 구하기 (0) | 2023.09.20 |
알고리즘 스터디 문제 1,2(기수변환) (0) | 2023.09.15 |