코딩 공부/C#-코딩테스트

(백준/C#) 약수, 배수와 소수

공부를 함 2024. 10. 4. 14:58

//5086

두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.

  1. 첫 번째 숫자가 두 번째 숫자의 약수이다.
  2. 첫 번째 숫자가 두 번째 숫자의 배수이다.
  3. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.
using System.Diagnostics;

int[] input() => Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
int[] i;

while(true)
{
    i = input();
    if (i[0] == 0 && i[1] == 0)
        return;
    else
    {
        if ((i[0] % i[1] == 0)) Console.WriteLine("multiple");
        else if ((i[1] % i[0] == 0)) Console.WriteLine("factor");
        else Console.WriteLine("neither");
    }
}
int[] t;
while ((t = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse)).Sum() != 0) 
{
    int a = t[0], b = t[1];
    Console.WriteLine(b % a == 0 ? "factor" : a % b == 0 ? "multiple" : "neither");
}

 

 

//2501

두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.

int[] i = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
List<int> answers = new List<int>();
for (int j = 1; j <= i[0]; j++)
{
    if (i[0] % j == 0)
        answers.Add(j);
}
if (answers.Count < (i[1])) Console.WriteLine(0);
else Console.WriteLine(answers[i[1] - 1]);

 

 

//9506

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.

예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.

n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

int x() => int.Parse(Console.ReadLine());
int num = 0;
int answer = 0;
List<int> list = new List<int>();
while ((num = x()) != -1)
{
    for(int i = 1; i < num; i++)
    {
        if(num % i == 0)
            list.Add(i);
    }
    foreach (int n in list)
        answer += n;
    if (answer == num) Console.WriteLine($"{num} = "+string.Join(" + ", list));
    else Console.WriteLine($"{num} is NOT perfect.");
    list.Clear();
    answer = 0;
}

 

 

//1978

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

Console.ReadLine();
int[] n = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int o = 0;
bool b;
foreach (int i in n)
{
    b = true;
    for (int j = i / 2; j > 1; j--) { if (i % j == 0) b = false; }
    if (b & i != 1) o++;
}
Console.Write(o);

 

 

//2581

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.

int min = int.Parse(Console.ReadLine());
int max = int.Parse(Console.ReadLine());
bool b;
List<int> list = new List<int>();

for(int i = min; i <= max; i++)
{
    b = true;
    for (int j = i / 2; j > 1; j--) { if (i % j == 0) b = false; }
    if (b & i != 1) list.Add(i);
}
if (list.Count <= 0) Console.WriteLine(-1);
else
{
    list.Sort();
    Console.WriteLine($"{list.Sum()}");
    Console.WriteLine($"{list[0]}");
}

 

 

//11653

정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.

int input = int.Parse(Console.ReadLine());
if (input == 1) Console.WriteLine("");
else
{
    for(int i = 2; i < input + 1; i++) 
        while((input % i) == 0)
        {
            Console.WriteLine(i);
            input /= i;
        }
}

 

 

'코딩 공부 > C#-코딩테스트' 카테고리의 다른 글

(백준/C#) 2차원 배열  (0) 2024.09.30
(백준/C#) 일반 수학 1  (0) 2024.09.24
(백준/C#) 심화 1  (0) 2024.09.23
(백준/C#) 문자열  (0) 2024.09.09
(백준/C#) 1차원 배열  (0) 2024.08.19