π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_38_μλΌν μ€ν λ€μ€μ 체 λ³Έλ¬Έ
[μ΄κ²μ΄ μ½λ© ν μ€νΈλ€ with Python]_38_μλΌν μ€ν λ€μ€μ 체
μ§μ§μνμΉ΄ 2022. 2. 16. 00:14220216 μμ±
<λ³Έ λΈλ‘κ·Έλ γμ΄κ²μ΄ μ·¨μ μ μν μ½λ© ν μ€νΈλ€γ μ youtubeλ₯Ό μ°Έκ³ ν΄μ 곡λΆνλ©° μμ±νμμ΅λλ€>
https://www.youtube.com/watch?v=9rLFFKmKzno&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=38
1. λ€μμ μμ νλ³
: νΉμ ν μμ λ²μ μμ μ‘΄μ¬νλ λͺ¨λ μμ μ°Ύμ λλ μ΄λ»κ²??
2. μλΌν μ€ν λ€μ€μ 체 μκ³ λ¦¬μ¦
: λ€μμ μμ°μμ λνμ¬ μμ μ¬λΆλ₯Ό νλ³ν λ μ¬μ©
: Nλ³΄λ€ μκ±°λ κ°μ λͺ¨λ μμ μ°Ύμ μ μμ
1) 2λΆν° NκΉμ§μ λͺ¨λ μμ°μ λμ΄
2) λ¨μ μ μ€ μμ§ μ²λ¦¬νμ§ μμ κ°μ₯ μμ μ i μ°ΎκΈ°
3) λ¨μ μ μ€ iμ λ°°μ λͺ¨λ μ κ±° (i λ μ κ±° X)
4) λ μ΄μ λ°λ³΅ν μ μμ λκΉμ§ 2λ², 3λ² κ³Όμ λ°λ³΅
- python
import math
n = 1000 # 2λΆν° 1,000κΉμ§μ λͺ¨λ μμ λνμ¬ μμ νλ³
array = [True for i in range(n + 1)] # μ²μμ λͺ¨λ μκ° μμ(True)μΈ κ²μΌλ‘ μ΄κΈ°ν
# μλΌν μ€ν
λ€μ€μ 체 μκ³ λ¦¬μ¦
for i in range(2, int(math.sqrt(n)) + 1): # 2λΆν° nμ μ κ³±κ·ΌκΉμ§μ λͺ¨λ μλ₯Ό νμΈνλ©°
if array[i] == True: # iκ° μμμΈ κ²½μ° (λ¨μ μμΈ κ²½μ°)
# iλ₯Ό μ μΈν iμ λͺ¨λ λ°°μλ₯Ό μ§μ°κΈ°
j = 2
while i * j <= n:
array[i * j] = False
j += 1
# λͺ¨λ μμ μΆλ ₯
for i in range(2, n + 1):
if array[i]:
print(i, end=' ')
- c++
#include <bits/stdc++.h>
using namespace std;
int n = 1000; // 2λΆν° 1,000κΉμ§μ λͺ¨λ μμ λνμ¬ μμ νλ³
// μ²μμ λͺ¨λ μκ° μμ(True)μΈ κ²μΌλ‘ μ΄κΈ°ν(0κ³Ό 1μ μ μΈ)
vector<int> arr(n + 1, true);
int main() {
// μλΌν μ€ν
λ€μ€μ 체 μκ³ λ¦¬μ¦ μν
// 2λΆν° nμ μ κ³±κ·ΌκΉμ§μ λͺ¨λ μλ₯Ό νμΈνλ©°
for (int i = 2; i <= (int) sqrt(n); i++) {
// iκ° μμμΈ κ²½μ°(λ¨μ μμΈ κ²½μ°)
if (arr[i] == true) {
// iλ₯Ό μ μΈν iμ λͺ¨λ λ°°μλ₯Ό μ§μ°κΈ°
int j = 2;
while (i * j <= n) {
arr[i * j] = false;
j += 1;
}
}
}
// λͺ¨λ μμ μΆλ ₯
for (int i = 2; i <= n; i++) {
if (arr[i]) cout << i << ' ';
}
}
- java
import java.util.*;
class Main {
// μμ νλ³ ν¨μ(2μ΄μμ μμ°μμ λνμ¬)
public static boolean isPrimeNumber(int x) {
// 2λΆν° (X-1) κΉμ§μ λͺ¨λ μ νμΈνλ©°
for (int i = 2; i < x ; i++) {
// xκ° ν΄λΉ μλ‘ λλμ΄λ¨μ΄μ§λ€λ©΄
if (x % i == 0) {
return false; // μμκ° μλ
}
}
return true; // μμμ
}
public static void main(Strin
=> μ ν μκ°μ κ°κΉμΈ μ λλ‘ λ§€μ° λΉ λ₯΄λ€
=> μκ° λ³΅μ‘λλ O(NloglogN)
=> κ° μμ°μμ λν μμ μ¬λΆ μ μ₯ν΄μΌ λΌμ λ©λͺ¨λ¦¬ λ§μ΄ νμ