티스토리 뷰

반응형

소수 구하기 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB 175452 49405 34786 26.677%

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

예제 입력 1 복사

3 16

예제 출력 1 복사

3
5
7
11
13

 

 

#include <iostream>

using namespace std;


int main(void)
{
	int arr[1000001] = { 0, };
	int n, m;
	cin >> m >> n;
	arr[1] = 1;
	for (int i = 2; i <= n; i++)
	{

		for (int j = 2; i * j <= n; j++)
			arr[i * j] = 1;
	}

	for (int i = m; i <= n; i++)
	{
		if (arr[i] == 0)
			printf("%d ", i);
	}
	return 0;
}

 

 

1. 범위에 2,3,4.... 의 배수를 입력한다.

 

소수는 1과 자기 자신만을 약수로 가지는데, 배수를 해서 그 값이 나오면 그 값은 소수가 아니다.

2의 배수인 4,6,8,10 등은 소수가 아니다.

3,6,9 등도 마찬가지로, 숫자를 늘려가면서 값을 채운다.

 

이 배수에 1을 넣고 1이 들어있지 않은 수는 그럼 소수이다.

 

이를 출력한다.

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함
반응형