μλΌν μ€ν λ€μ€μ 체λ₯Ό μ΄μ©ν΄ μμ νλ³νκΈ° (C++)
μ£Όμ΄μ§ λ²μ λ΄μμ μμμΆλ ₯μ μ΅λν λΉ λ₯΄κ² ν μ μλ 'μλΌν μ€ν
λ€μ€μ 체' μκ³ λ¦¬μ¦μ μμλ³΄κ² μ΅λλ€.
λ¬Έμ : BOJ_1124λ² μΈλνλΌμ
λ°±μ€ λ¬Έμ 1124λ² μΈλνλΌμ λ¬Έμ μΈλ°μ. μ½κ² λ§ν΄μ μΈλνλΌμμ μ΄λ€ μλ₯Ό μμΈμ λΆν΄ νμ λ λμ€λ μμμ κ°μκ° μμμΈ μλ₯Ό λ§ν©λλ€.
μ ν΄μ§ λ²μμμμ μΈλνλΌμμ ꡬνκΈ°μν΄ λ§μ μλλ₯Ό ν΄λ³Ό μ μκ² μ§λ§, κ²°κ΅ μλΌν μ€ν
λ€μ€μ 체λ₯Ό μ΄μ©νμ§ μλλ€λ©΄ λͺ¨λ μκ°μ΄κ³Όμ κ±Έλ¦°λ€λ κ²μ μκ² λ©λλ€.
κ·Έλ λ€λ©΄, μλΌν μ€ν λ€μ€μ 체λ μ΄λ€ μκ³ λ¦¬μ¦μΌκΉμ?
μ°μ 120κΉμ§μ λ²μμμ μλΌν μ€ν λ€μ€μ 체λ₯Ό μ¬μ©νλ λ°©λ²μ μν€λ°±κ³Όμμ λ°μ·ν΄ λ³΄κ² μ΅λλ€
μλΌν μ€ν λ€μ€μ 체 μκ³ λ¦¬μ¦
2λΆν° μμλ₯Ό ꡬνκ³ μ νλ ꡬκ°μ λͺ¨λ μλ₯Ό λμ΄νλ€.
2λ μμμ΄λ―λ‘ 2λ₯Ό μμλ‘ μ²΄ν¬νλ€.
μκΈ° μμ μ μ μΈν 2μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€.
λ¨μμλ μ κ°μ΄λ° 3μ μμμ΄λ―λ‘ 2μ μμλ‘ μ²΄ν¬νλ€.
μκΈ° μμ μ μ μΈν 3μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€.
λ¨μμλ μ κ°μ΄λ° 5λ μμμ΄λ―λ‘ μ€λ₯Έμͺ½μ 5λ₯Ό μμλ‘ μ²΄ν¬νλ€.
μκΈ° μμ μ μ μΈν 5μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€.
λ¨μμλ μ κ°μ΄λ° 7μ μμμ΄λ―λ‘ μ€λ₯Έμͺ½μ 7μ μμλ‘ μ²΄ν¬νλ€.
μκΈ° μμ μ μ μΈν 7μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€.
μμ κ³Όμ μ λ°λ³΅νλ©΄ ꡬνλ ꡬκ°μ λͺ¨λ μμκ° λ¨λλ€.
κ·Έλ¦Όμ κ²½μ°, μ΄λ―λ‘ 11λ³΄λ€ μμ μμ λ°°μλ€λ§ μ§μλ μΆ©λΆνλ€.
μ¦, 120λ³΄λ€ μκ±°λ κ°μ μ κ°μ΄λ° 2, 3, 5, 7μ λ°°μλ₯Ό μ§μ°κ³ λ¨λ μλ λͺ¨λ μμμ΄λ€.
(μΆμ² : μν€λ°±κ³Ό)
μλΌν μ€ν
λ€μ€μ 체λ λ§ κ·Έλλ‘ μμλ₯Ό μ μΈν μλ₯Ό κ±Έλ¬λ΄λ 체μ΄λ©°, λ¬Έμ μμ μ£Όμ΄μ§ λ²μλ΄μ μμλ€λ§ λ°λ‘ κ±Έλ¬μ€λ€λ©΄ μκ°λ³΅μ‘λκ° κ΅μ₯ν μ€μ΄λ λ€λ κ²μ μ μ μμ΅λλ€.
κ°λ¨νκ² μμ 120κΉμ§ μμμΆλ ₯ μκ³ λ¦¬μ¦μ c++λ‘ λ§λ€μ΄λ³Έλ€λ©΄,
μκ³ λ¦¬μ¦ κ΅¬ν
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int era[121];
int main(void) {
era[0] = 1;
era[1] = 1;
for (int i = 2; i < sqrt(120); i++) {
if (era[i] == 1) continue;
int cnt = 2;
while (cnt*i <= 120) {
era[i*cnt] = 1;
cnt++;
}
}
for (int i = 1; i <= 120; i++) {
if (era[i] == 0) cout << i << ' ';
}
return 0;
}
μ΄λ κ² λ°°μ΄μμ μμμ λ°°μκ° λλ μλ€μ λͺ¨λ 1λ‘ λ°κΏμ£Όκ³ λ°°μ΄μ μκ° 0μΈ μλ€μ μΆλ ₯νλ©΄ μμκ° μΆλ ₯λ¨μ μ μ μμ΅λλ€. μ¬κΈ°μ λ μκ°λ³΅μ‘λλ₯Ό μ€μ΄κΈ°μν΄ 120μ΄λΌλ©΄ 11^2=121μ΄κΈ° λλ¬Έμ, λ°λ³΅λ¬Έμ 11κΉμ§λ§ λλ Έμμ νμΈν μ μκ³ , μ΄λ μ£Όμ΄μ§ λ²μμ λ°λΌ math.hμ sqrt()ν¨μλ₯Ό ν΅ν΄ ꡬνν μ μμ΅λλ€.
κ·Έλ¬λ©΄ λ€μ μΈλνλΌμ λ¬Έμ λ‘ λ€μ΄κ°μ, sqrt()μ μλΌν μ€ν λ€μ€μ 체λ₯Ό μ΄μ©ν΄ λ¬Έμ λ₯Ό νμ΄λ³Έλ€λ©΄,
Solution code
#include <iostream>
#include <cmath>
using namespace std;
int era[100001], check[100001], nm1, nm2, cnt1, cnt2, res;;
int main(void) {
cin >> nm1 >> nm2;
for (int j = 2; j <= sqrt(nm2); j++) {
if (check[j] == 0) {
era[cnt1] = j;
cnt1++;
int mul = 2;
int nm3 = mul * j;
while (nm3 <= nm2) {
check[nm3] = 1;
mul++;
nm3 = mul * j;
}
}
}
check[0] = 1;
check[1] = 1;
for (int i = nm1; i <= nm2; i++) {
int nm4 = i;
int st = 2;
cnt2 = 0;
while (nm4 != 1) {
if (check[st] == 0) {
if (nm4%st == 0) {
nm4 = nm4 / st;
cnt2++;
}
else st++;
}
else st++;
}
if (check[cnt2] == 0) res++;
}
printf("%d", res);
}
μμ κ°μ΄ νμ΄νλ©΄, 1360msλ‘ μκ°λ³΅μ‘λμ μλ°°λμ§μκ³ μ λ΅μ²λ¦¬ λ¨μ μ μ μμ΅λλ€.
'Algorithm > μ΄λ‘ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
ν¬ν¬μΈν° μκ³ λ¦¬μ¦ (0) | 2022.03.09 |
---|---|
μ ν, λ²λΈ, μ½μ μ λ ¬ (0) | 2022.03.09 |
[μκ³ λ¦¬μ¦] 8μ κ°μ ꡬνκΈ° (1~10μ΅) (0) | 2022.03.09 |
Trie(νΈλΌμ΄) μκ³ λ¦¬μ¦ (0) | 2022.03.08 |
μ ν΄λ¦¬λ νΈμ λ² (0) | 2022.03.05 |