Algorithm/BOJ
[BOJ] 2581번 소수 C# 사용 풀이
Bueong_E
2023. 2. 6. 23:08
반응형
SMALL
초반에 예외 처리를 잘못하여 다시 작성하였다;;;
문제
처음 틀린 풀이
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace BOJ2581
{
internal class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
int M = int.Parse(sr.ReadLine());
int N = int.Parse(sr.ReadLine());
int sum = 0;
List<int> numList = new List<int>();
for (int i = M; i <= N; i++)
{
if (i == 2 || i == 3 || i == 5 || i == 7)
{
sum += i;
numList.Add(i);
}
else if (i != 0 && i != 1 && i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0)
{
sum += i;
numList.Add(i);
}
}
if (numList.Count > 0)
{
sw.WriteLine(sum);
sw.WriteLine(numList.Min());
}
else sw.WriteLine(-1);
//foreach(int i in numList) { sw.WriteLine(i); }
//sw.WriteLine(numList.Count());
sr.Close();
sw.Close();
}
}
}
이후 브루트 포스로 해결한 풀이
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace BOJ2581
{
internal class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
int M = int.Parse(sr.ReadLine());
int N = int.Parse(sr.ReadLine());
int sum = 0;
int temp = 0;
List<int> numList = new List<int>();
List<int> primenum = new List<int>();
for (int i = M; i <= N; i++) numList.Add(i);
for (int i = 0; i < numList.Count; i++)
{
if (numList[i] == 0 || numList[i] == 1) continue;
else if (numList[i] == 2)
{
sum += numList[i];
primenum.Add(numList[i]);
}
else
{
for (int j = 2; j < numList[i]; j++)
{
if (numList[i] % j == 0)
{
temp = 0;
break;
}
else temp = numList[i] % j;
}
if (temp != 0)
{
sum += numList[i];
primenum.Add(numList[i]);
temp = 0;
}
}
}
if (primenum.Count > 0)
{
sw.WriteLine(sum);
sw.WriteLine(primenum.Min());
}
else sw.WriteLine(-1);
sr.Close();
sw.Close();
}
}
}
결과창
소수가 없을경우
반응형
LIST