[C++] μμ νλ³λ², μμ κ°μ ꡬνλ λ²
μμ: 2λ³΄λ€ ν¬κ³ μκΈ° μμ μΈμ μ½μλ₯Ό κ°μ§μ§ μλ μ
1. μμ°μ Nμ΄ μμμΈμ§ νλ³νλ λ²
: 2λ³΄λ€ ν¬κ±°λ κ°κ³ , 루νΈNλ³΄λ€ μκ±°λ κ°μ μμ°μλ‘ λλμ΄ λ¨μ΄μ§μ§ μλμ§ νμΈνκΈ°.
: μκ°λ³΅μ‘λ 루νΈN
* μ λ£¨νΈ N κΉμ§?
μμ°μ Nμ΄ μμκ° μλλΌλ©΄ N = a X bλ‘ λνλΌ μ μμ΅λλ€.(aμ bλ μμ°μμ΄κ³ Nμ μ½μ μ‘°ν©)
μ΄ λ, a > bλΌλ©΄ λ μμ μμΉλ₯Ό λ°κΏκ°λ©° νμ a <= bλ‘ λ§λ€ μ μμ κ²μ λλ€.
κ·Έλ¦¬κ³ λ μ aμ bμ μ°¨μ΄κ° κ°μ₯ μμ κ²½μ°λ λ£¨νΈ NμΌ λ(μ κ³±κ·ΌμΌ λ) μ΄λ―λ‘ λ£¨νΈNκΉμ§λ§ κ²μ¬λ₯Ό ν΄λ³΄λ©΄ λ©λλ€.
β
24λ₯Ό μλ‘ λ€μ΄λ³΄κ² μ΅λλ€. 24λ μμκ° μλλ―λ‘ 24μ μ½μλ 1,2,3,4,6,8,12,24κ° μμ κ²λλ€. μ΄ λ, 24λ₯Ό λ μμ κ³±μΌλ‘ ννν΄λ³΄λ©΄ 1X24, 2X12, 3X8, 4X6μΌλ‘ λνλΌ μ μμ΅λλ€.μ¦, νν μμλ₯Ό ꡬν λ N/2κΉμ§ κ³μ°ν΄λ³΄λλ° 1,2,3μΌλ‘ λλμμ λ μ΄λ―Έ 24, 12, 8 λν μμκ° μλλΌλ κ²μ μ μ μμ΅λλ€.
λ°λΌμ λμμ μ°¨μ΄κ° κ°μ₯ μμ κ²½μ°μΈ 루νΈNκΉμ§λ§ κ²μ¬λ₯Ό ν΄λ³΄λ©΄ λλ κ²μ λλ€.(루νΈ24 = 4.xxxx μ΄λ―λ‘ 4κΉμ§λ§ κ²μ¬νλ©΄ λ©λλ€.)
* μ½λ
#include <iostream>
using namespace std;
bool prime(int n) {
if (n > 2) {
return false;
}
for (int i = 2; i*i<=n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
bool result = prime(n);
cout << result << endl;
return 0;
}
2. NκΉμ§μ μ μ€μ μμ κ°μ ꡬνλ λ²
: μλΌν μ€ν λ€μ€μ 체 λ°©λ²μ μ¬μ©ν©λλ€.
: μκ°λ³΅μ‘λ O(N*log(logN))
* μλΌν μ€ν λ€μ€μ 체λ ?
2λΆν° NκΉμ§ λͺ¨λ μλ₯Ό μ¨λκ³ , 2λΆν° κ·Έ λ°°μλ₯Ό λͺ¨λ μ§μ°λ©΄μ μμλ₯Ό μ°Ύλ λ°©λ²μ λλ€. μ΄ λ, μμ§ μ§μμ§μ§ μμ μλ μμλΌκ³ ν μ μμΌλ―λ‘, μμλ₯Ό μ°Ύμ μ μλ κ²μ λλ€. μ΄ λλ μμ μμμ λ³Έ λ°©λ²μ²λΌ 루νΈNκΉμ§λ§ λ°λ³΅μ€ννλ©΄ λ©λλ€.
μλ₯Ό λ€μ΄, 1λΆν° 100κΉμ§λΌλ©΄ 11X11μ 121λ‘ 100μ λκΈ° λλ¬Έμ λμ΄μ μνν νμκ° μμ΅λλ€.
λ°λΌμ 10κΉμ§λ§ μλΌν μ€ν λ€μ€μ 체λ₯Ό ꡬνλ©΄ λλκΉ μκ°λ³΅μ‘λκ° ν¨μ¬ μ§§κ² μ£ ~
* μ½λ
#include <iostream>
using namespace std;
int main() {
int prime[100]; //μμλ₯Ό μ μ₯ν λ³μ
int pn = 0; //μμμ κ°μ
bool check[101] = { false, }; //μ§μμ‘μΌλ©΄ true
int n = 100; //100κΉμ§μ μμ
for (int i = 2; i <= n; i++) {
if (check[i] == false) {
prime[pn++] = i;
for (int j = i + i; j <= n; j += i) {
check[j] = true;
}
}
}
for (int i = 0; i < pn; i++) {
cout << prime[i] <<" ";
}
return 0;
}
κ΄λ ¨ λ¬Έμ
https://www.acmicpc.net/problem/1929