본문 바로가기
코딩 연습문제/C++ 연습문제

[C++ 코딩문제] 소수 출력

by bigpicture 2022. 8. 29.
반응형

문제

정수 N을 입력받고 N 이하의 소수를 출력하시오. 

 

정답

- 이전 글인 소수판별 문제 답에서 확장함

- decideN 클래스 내에서 정의된 num 이 소수인지 판단하는데, 특정 값을 입력받아 소수인지 판단하는 함수가 필요했으므로 decideN2를 정의함

-  num 보다 작은 수들에 decideN2 를 적용하고 소수일 경우 출력되게 함. 

 

#include <iostream>

using namespace std;

class myprime
{
private:
    int num;
public:
    myprime(const int num);
    int decideN(); // num이 소수인지 판단
    int decideN2(int n); // 입력된 n이 소수인지 판단
    void NumPrime(); // num이하의 소수 출력
};

myprime::myprime(const int N)
{
    num = N;
}

int myprime::decideN()
{
    int a = 0;

    if (num == 1) { return 0; }

    else
    {
        for (int i = 2; i < num; i++)
        {
            if (num % i == 0) { return 0; }
        }

        return 1;
    }
}

int myprime::decideN2(int n)
{
    int a = 0;

    if (n == 1) { return 0; }

    else
    {
        for (int i = 2; i < n; i++)
        {
            if (n % i == 0) { return 0; }
        }

        return 1;
    }
}


void myprime::NumPrime()
{
    if (decideN() == 0)
    {
        cout << "소수아님" << endl;
    }

    else if (decideN() == 1)
    {
        cout << "입력하신 수 이하의 소수는 아래와 같습니다." << endl;
        for (int i = 1; i <= num; i++)
        {
            if (decideN2(i) == 1)
            {
                cout << i << endl;
            }
        }
        
    }
}



int main()
{
    int num;

    cout << "숫자를 입력하세요. (소수이면 1, 아니면 0이 출력됩니다.)";

    cin >> num;

    myprime num1(num);

    cout << num1.decideN() << endl;
    num1.NumPrime();


    return 0;
}
반응형

댓글