출처 : 반크_세계유산 석굴암
문제]
다음 조건에 맞는 프로그램을 작성하시오.
조건)
1. 키보드로 임의의 정수를 입력하시오.
2. 입력한 수까지의 소수를 모두 출력하시오.
3. 입력한 수까지의 소수의 개수를 구하시오.
4. 소수는 한 라인에 10개씩 일정하게 출력하도록 하시오.
5. 계속할 것인지의 여부를 물어 프로그램을 종료하시오.
6. 대소문자 구분없이 작업하시오.
출력 예)
임의의 정수를 입력하시오 : 10
1에서 10까지 소수는 아래와 같습니다.
2 3 5 7
소수의 개수는 4개입니다.
계속하시겠습니까?(y/n) Y
임의의 정수를 입력하시오 : 50
1에서 50까지 소수는 아래와 같습니다.
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47
소수의 개수는 15개입니다.
계속하시겠습니까?(y/n) n
수고하셨습니다.
참고풀이]
#include <iostream>
#include <vector>
#include <iomanip>//setw()
#include <string>
using namespace std;
int JariSu(int n)
{
int x,y;
for(x=y=1;y<=n;y*=10) x++;
return x;
}
int main()
{
vector<int> v;//소수값을 넣을 vector를 선언한다.
int N;//임의의 자연수 변수
int i,j;//인덱스 또는 반복변수
int J;//일정하게 출력할 자리수변수
char ch;//계속여부 체크변수
while(1)
{
cout << "임의의 정수를 입력하시오 : ";
cin >> N;
//소수값을 vector에 넣는다.
for(i=1;i<=N;i++)
{
for(j=2;j<i;j++)
if(i%j==0) break;
if(i==j)
v.push_back(i);
}
//소수값과 개수를 출력한다.
cout << "1에서 " << N <<"까지 소수는 아래와 같습니다.\n";
J=JariSu(N);
for(i=0;i<v.size();i++)
{
cout << setw(J);
if((i+1)%10==0) cout << v[i] << endl;
else cout << v[i];
}
cout << "\n소수의 개수는 " << v.size() << "개입니다.\n";
//계속여부 체크부분
cout << "\n계속하시겠습니까?(y/n) ";
cin >> ch;
if(tolower(ch)=='n') break;
v.clear();//vector의 내용을 모두 삭제한다.
cout<<endl;
}
cout << "수고하셨습니다.\n";
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 가을
'프로그램 > C++ 1000제' 카테고리의 다른 글
C++ 46제] vector 사용, 조건에 맞는 진수와 승수값을 출력하시오. (0) | 2022.06.16 |
---|---|
C++ 45제] vector 사용, 아래와 같은 모래시계 도형을 출력하시오. (0) | 2022.06.14 |
C++ 43제] vector 사용, 수열 문제의 결과값을 구하시오. (0) | 2022.06.13 |
C++ 42제] vector 사용, 1 + 1 + 2 ... + 34 + 55의 결과값을 구하시오. (0) | 2022.06.10 |
C++ 41제] vector 사용, 1 - 2 + 4 ... - 46 + 56의 결과값을 구하시오. (0) | 2022.06.10 |
댓글