소수 ( Prime Number ) 구하기
- 약수가 1과 자기 자신뿐인 자연수
소스코드
import java.util.Scanner;
public class primenumber {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int a = sc.nextInt();
int c = 0;
int sum = 0;
for (int i = 2; i <= a; i++) {
for (int j = 2; j <= i; j++) {
if (i % j == 0) {
c++;
}
}
if (c == 1) {
System.out.print(i + " " );
sum += i;
}
c = 0;
}
System.out.println();
System.out.println("소수의 합계 : " + sum);
}
}
설명
a : 소수의 범위를 지정
c : 소수를 확인하는 변수
sum : 소수들의 합을 저장할 변수
첫번째 반복문
소수는 2부터 시작하기 때문에 int i에 2를 시작값으로 저장한다.
두번째 반복문
변수 j에 시작값으로 2를 저장하고, 부모(i)와 자식(j)의 나눈 값의 나머지가 0으로 떨어질 때
변수 c 를 증가시켜준다.
소수는 1과 자기자신뿐만 취급하기 때문에
c가 1일 때의 값만 확인할 수 있는 조건문을 작성한다.
이후, i ( 소수) 값을 출력하고, sum 변수에 해당 값들을 순차적으로 합한다.
첫 번째 반복이 끝난이후, 소수를 확인하는 변수인 c를 다시 0으로 초기화해줌으로써
두 번째 반복시 다시 소수 카운팅을 할 수 있게 작성한다.
결과
소수 구하기 2
소스 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int num = sc.nextInt();
int sum = 0;
for (int i = 2; i <= num; i++) {
for (int j = 2; j <= i; j++) {
if (i % j == 0 && i != j) {
break;
}
if (i == j) {
System.out.print(i + " ");
sum += i;
}
}
}
System.out.println("");
System.out.println("소수의 합 : " + sum);
}
}
설명
두 번째 반복문의 조건식을 작성할 때까지는 동일하지만,
두 번째 반복문 내의 조건식부터 차이가 있다.
첫 번째 소스코드에서는 부모 i 와 자식 j 의 나머지값이 0인 경우, 해당 값을 카운팅을 했지만
현재 소스코드에서는 나머지 값이 0이고, i가 j와 다를 때 반복을 중단시키고, 다음으로 넘어간다.
소수는 1과 나 자신이기 때문에 나머지가 0이고 나 자신과 다른 값이 들어온다면, 해당 값은 올바르지 않으므로
반복을 중단시키게 된다.
두번째 조건식으로 넘어와, 부모와 자식이 동등하다면 즉, 첫 번째 반복의 수와 두 번째 반복하면서
찾은 수가 동일하다면, 그 값을 저장하고 출력하도록 한다.
728x90
'Programming > Java' 카테고리의 다른 글
[JAVA] 배열 연습 (0) | 2023.11.01 |
---|---|
[JAVA] 탈출문 (1) | 2023.11.01 |
반복문을 이용한 별만들기 (0) | 2023.10.31 |
[JAVA] 배열 (0) | 2023.10.30 |
[JAVA] 제어문 (0) | 2023.10.26 |