728x90
문제 링크 : https://www.acmicpc.net/problem/2581
목차
1 설명
2 내 코드
4 실행 결과
설명
백준 브론즈 2 문제 입니다.
내 코드
int startNum = int.Parse(Console.ReadLine());
int endNum = int.Parse(Console.ReadLine());
int sum = 0;
int minNum = -1;
for (int i = startNum; i <= endNum; i++)
{
if (i == 1)
{
continue;
}
sum += i;
for (int k = 2; k <= i; k++)
{
if (i % k == 0 && k != i)
{
sum -= i;
break;
}
else if (i % k == 0 && k == i)
{
if (minNum == -1)
{
minNum = i;
}
else if (minNum > i)
{
minNum = i;
}
}
}
}
if (minNum != -1)
{
Console.WriteLine(sum);
Console.WriteLine(minNum);
}
else
{
Console.WriteLine(minNum);
}
문제 풀이 해석 내용
입력 처리
int startNum = int.Parse(Console.ReadLine());
int endNum = int.Parse(Console.ReadLine());
사용자로부터 시작 숫자 startNum과 끝 숫자 endNum을 입력받아 정수로 변환합니다.
변수 초기화
int sum = 0;
int minNum = -1;
sum은 소수의 합을 저장하는 변수입니다.
minNum은 가장 작은 소수를 저장하는 변수로, 초기값을 -1로 설정하여 소수가 발견되지 않은 상태를 나타냅니다.
범위 내의 숫자 반복
for (int i = startNum; i <= endNum; i++)
{
if (i == 1)
{
continue;
}
sum += i;
startNum부터 endNum까지의 숫자를 반복합니다.
i가 1인 경우 소수가 아니므로 continue 문으로 넘어갑니다.
각 숫자를 sum에 더합니다.
소수 판별
for (int k = 2; k <= i; k++)
{
if (i % k == 0 && k != i)
{
sum -= i;
break;
}
else if (i % k == 0 && k == i)
{
if (minNum == -1)
{
minNum = i;
}
else if (minNum > i)
{
minNum = i;
}
}
}
내부 루프에서 i가 소수인지 확인합니다.
k는 2부터 i까지 반복하며, i가 k로 나누어 떨어지면 소수 판별을 합니다.
만약 i가 k로 나누어 떨어지면서 k가 i가 아닌 경우, 즉 약수가 존재하면 sum에서 i를 빼고 루프를 종료합니다.
k가 i인 경우, 즉 i가 자기 자신으로 나누어지는 경우, 소수로 판별된 것입니다. 가장 작은 소수를 minNum에 저장합니다.
결과 출력
if (minNum != -1)
{
Console.WriteLine(sum);
Console.WriteLine(minNum);
}
else
{
Console.WriteLine(minNum);
}
minNum이 -1이 아닌 경우, 즉 소수가 하나라도 발견된 경우, sum과 minNum을 출력합니다.
소수가 발견되지 않은 경우, minNum을 출력합니다 (이 경우 -1이 출력됨).
실행 결과
728x90
'C#' 카테고리의 다른 글
백준 C# 27323 문제 풀이 (0) | 2024.10.18 |
---|---|
백준 C# 11653 문제 풀이 (0) | 2024.10.16 |
백준 C# 1978 문제 풀이 (0) | 2024.10.13 |
백준 C# 9506 문제 풀이 (0) | 2024.10.12 |
백준 C# 2563 문제 풀이 (0) | 2024.10.11 |