Baekjoon

[자바, C++] 1978번 - 소수 찾기

yujin0517 2021. 9. 26. 23:18

1978번 - 소수 찾기 

 

<자바>

코드 설명

  1. 입력받을 숫자의 개수(=N) Scanner로 입력받기
  2. N만큼 for문 돌리기
  3. 소수인지 아닌지는 isPrime변수를 통해 확인
  4. input_Num이 1일 경우 다음 단계가 필요 없기에 continue
  5. input_Num % j == 0 -> 나머지가 0일 경우 소수가 아님 -> isPrime = false
  6. for문이 실행되는 동안 isPrime이 true로 유지될 경우 count_Num을 1씩 증가
  7. 마지막으로 sc.close()로 스캐너 끝내기 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int count_Num = 0;
		
		for(int i = 0; i < N; i++) {
			int input_Num = sc.nextInt();
			boolean isPrime = true;
			
			if(input_Num == 1) {
				continue;
			}
			
			for(int j = 2; j < input_Num; j++) {
				if(input_Num % j == 0) {
					isPrime = false;
				}
			}
			if(isPrime == true) {
				count_Num++;
			}
		}
		sc.close();
		System.out.println(count_Num);
	}
}

* 처음에 isPrime을 true로 선언하는 부분을 for문 밖에 작성했을 때 컴파일 에러가 발생했고,

for문 안에 작성했을 때 성공했습니다..

 

콘솔창

 

<C++>

코드 설명

-> 위의 Java코드와 똑같이 작성했기 때문에 cin, cout을 제외하고는 똑같습니다. 

 

#include <iostream>

using namespace std;

int main() {

	int N;
	int input_Num;
	int count_Num = 0;

	cin >> N;

	for (int i = 0; i < N; i++) {
		bool isPrime = true;
		cin >> input_Num;

		if (input_Num == 1) {
			continue;
		}

		for (int j = 2; j < input_Num; j++) {
			if (input_Num % j == 0) {
				isPrime = false;
			}
		}
		if (isPrime == true) {
			count_Num++;
		}
	}
	cout << count_Num << endl;
	return 0;
}

 

콘솔창

 

<자바와 C++ 비교>

 

 

Java코드 작성을 너무 오랜만에 해봐서 버벅 거렸지만 생각보다 빠르게 작성 완료!

C++은 지금 배우고 있는 언어라서 하는 김에 같이 해봤습니다.

학기 중이라 오랜만에 게시물을 작성했는데 부지런히 해야겠다는 생각이 드네요...ㅠㅠ

 

감사합니다!