🤔소수 구하기
소수(Prime Number)는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수입니다.
🔑반복문으로 구현
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
| #include <iostream>
int main()
{
int count, num;
std::cin >> num;
// 입력받은 num까지의 소수 구하기
for(int i = 2; i <= num; ++i)
{
count = 0;
for(int j = 2; j <= i; ++j)
{
// i가 j로 나눠지면 count 1 증가. count가 2이상이면 소수가 아님
if(i % j == 0)
{
++count;
}
}
// count가 1이면 i는 자기 자신으로만 나눠진다는 뜻이므로 해당 i는 소수
if(count == 1)
{
std::cout << i << " ";
}
}
}
|
🔑재귀함수로 구현
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
31
32
33
34
35
36
37
38
39
40
41
| #include <iostream>
int GetPrime(int a, int b)
{
int result = 0;
if(b <= 0)
{
return 0;
}
if(a % b == 0)
{
result = 1;
}
else
{
result = 0;
}
result += GetPrime(a, b -1);
return result;
}
int main()
{
int count, num;
std::cin >> num;
for(int i = 0; i < num; ++i)
{
count = GetPrime(i, i);
if(count == 2)
{
std::cout << i << " ";
}
}
}
|
🔑에라토스테네스의 체
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
31
32
33
34
35
36
37
38
39
40
41
42
| #include <iostream>
#include <cmath>
int main()
{
int num;
int count = 0;
std::cout << "Enter a number: ";
std::cin >> num;
int* arr = new int[num + 1];
for (int i = 2; i <= num; ++i)
{
arr[i] = i;
}
for (int i = 2; i <= std::sqrt(num); ++i)
{
if (arr[i] == 0)
{
continue;
}
for (int j = 2 * i; j <= num; j += i)
{
arr[j] = 0;
}
}
for (int i = 2; i <= num; ++i)
{
if (arr[i] != 0)
{
std::cout << arr[i] << " ";
}
}
delete[] arr;
arr = nullptr;
}
|
Leave a comment