Outdated/Algorithm Solution

[BOJ] 1978번 소수 찾기

해달 2019. 6. 3. 09:00

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

예제

// 입력
4
1 3 5 7

// 출력
3

코드

  • C++17
#include <iostream>

using namespace std;

bool primes[1001] = { true, true };
int N, ans;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	// 에라토스테네스의 체
	for (int i = 2; i <= 1000; i++)
	{
		if (primes[i] == false)
		{
			for (int j = i * i; j <= 1000; j += i)
				primes[j] = true;
		}
	}

	cin >> N;
	for (int i = 0; i < N; i++)
	{
		int num;
		cin >> num;
		if (primes[num] == false)
			++ans;
	}

	cout << ans;
}
  • C#
using System;

namespace AlgorithmsByCsharp
{
    class Program
    {
        static bool[] primes = new bool[1001];
        static int N, ans;

        static void Main(string[] args)
        {
            primes[0] = primes[1] = true;
            for (int i = 2; i <= 1000; i++)
            {
                if (primes[i] == false)
                {
                    for (int j = i * i; j <= 1000; j += i)
                    {
                        primes[j] = true;
                    }
                }
            }

            N = int.Parse(Console.ReadLine());
            string[] inputs = Console.ReadLine().Split();
            for (int i = 0; i < N; i++)
            {
                int index = int.Parse(inputs[i]);
                if (primes[index] == false)
                {
                    ++ans;
                }
            }

            Console.Write(ans);
        }
    }
}
  • Python
import sys;

is_primes = [True for i in range(1001)]
for i in range(2, 1001):
    if is_primes[i]:
        for j in range(i * i, 1001, i):
            is_primes[j] = False
is_primes[0] = is_primes[1] = False

Ans = 0
N = int(sys.stdin.readline())
inputs = sys.stdin.readline().split(' ')
for i in inputs:
    if is_primes[int(i)]:
        Ans += 1
sys.stdout.write(str(Ans))

'Outdated > Algorithm Solution' 카테고리의 다른 글

[BOJ] 11661번 해의 개수  (0) 2019.06.10
[BOJ] 11401번 이항 계수 3  (0) 2019.06.07
[BOJ] 2839번 설탕 배달  (0) 2019.05.31
[BOJ] 2455번 지능형 기차  (0) 2019.05.30
[BOJ] 10835번 카드게임  (0) 2019.05.29