재귀 함수로 소수 찾기:
결과 출력:
using System.Text;
namespace BOJ
{
class No_2023
{
static void Main()
{
StringBuilder sb = new StringBuilder();
int n = int.Parse(Console.ReadLine());
int[] prime = { 2, 3, 5, 7 };
for (int i = 0; i < 4; i++)
{
Recursive(prime[i], n - 1, sb);
}
Console.Write(sb);
}
static void Recursive(int first, int n, StringBuilder sb)
{
if (n == 0)
{
sb.AppendLine($"{first}");
}
for (int i = 1; i < 10; i += 2)
{
int temp = first * 10 + i;
if (IsPrime(temp))
{
Recursive(temp, n - 1, sb);
}
}
}
static bool IsPrime(int num)
{
if (num < 2)
{
return false;
}
for (int i = 2; i * i <= num; i++)
{
if (num % i == 0)
{
return false;
}
}
return true;
}
}
}
2023년도가 끝나고 새해가 밝아 2023번을 풀어보았다.
처음엔 해당 값들(ex. 7331 733 73 7) 모두 소수인지 판별하도록 작성하였는데 시간초과
가 떴다. 도저히 시간을 줄이는 방법이 생각나지 않아 검색하여 방법을 찾아냈다.
소수일 확률이 높은 수들을 직접 제작하여 소수 판별하는 방법
수학
정수론
백트래킹
소수 판정