https://www.acmicpc.net/problem/9421
λ¬Έμ
μμ μ μ nμ κ° μ리μμ μ κ³±μ ν©μ κ³μ°νλ€. κ·Έλ κ² ν΄μ λμ¨ ν©λ κ° μ리μμ μ κ³±μ ν©μ κ³μ°νλ€. μ΄λ κ² λ°λ³΅ν΄μ 1μ΄ λμ¨λ€λ©΄, nμ μκ·ΌμλΌκ³ νλ€.
700μ μκ·Όμμ΄λ€.
- 72 + 02 + 02 = 49
- 42 + 92 = 97
- 92 + 72 = 130
- 12 + 32 + 02 = 10
- 12 + 02 = 1
2λ μκ·Όμκ° μλλ€.
- 22 = 4
- 42 = 16
- 12 + 62 = 37
- 32 + 72 = 58
- 52 + 82 = 89
- 82 + 92 = 145
- 12 + 42 + 52 = 42
- 42 + 22 = 20
- 22 + 02 = 4
- 42 = 16
- ... λλμ§ μλλ€
μμλ 1κ³Ό μκΈ°μμ μ μ μΈνκ³ μ½μκ° μλ μμ΄λ€. 2, 3, 5, 7, 11, 13, 17, 19, ... λ μμμ΄λ€.
μμμκ·Όμλ μμμ΄λ©΄μ μκ·ΌμμΈ μ«μμ΄λ€. 7, 13, 19, ... λ μμ μκ·Όμμ΄λ€.
nμ΄ μ£Όμ΄μ‘μ λ, nλ³΄λ€ μκ±°λ κ°μ λͺ¨λ μμμκ·Όμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ n (10 ≤ n ≤ 1000000)μ΄ μ£Όμ΄μ§λ€.
νμ΄
nκΉμ§μ λͺ¨λ μλ€μ΄ trueμΈ λ°°μ΄μ νλ λ§λ λ€.
μλΌν μ€ν λ€μ€λ‘ μμκ° μλ μ λ€μ falseλ‘ κ±Έλ¬λΈλ€
λ¬Έμ μ λμ¨ κ·Έλλ‘ κ΅¬νν΄μ μκ·Όμκ° μλ κ²½μ°λ falseλ‘ κ±Έλ¬λΈλ€
μκ·Όμ νλ³ :
κ° μ리 μ«μμ μ κ³±μ λν κ°λ€μ μ°μμ μΌλ‘ ꡬνλ©΄μ νλ²μ΄λΌλ ꡬνλ κ°μ΄ λμ€λ©΄ μ§κΈκΉμ§ λμλ κ°λ€μ μ λΆ falseμ²λ¦¬νλ€
(μ΄μ°¨νΌ μνν κ² λ»νκΈ° λλ¬Έ)
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
const int INF = 1000001;
vector<bool> isSoSang(INF, true);
// κ° μ리 μ«μ μ κ³± λνλ ν¨μ
int sumOfDigit(int num) {
int sum = 0;
while(num>0) {
sum += (num%10)*(num%10);
num/=10;
}
return sum;
}
int main() {
int n;
cin >> n;
// μμ νλ³
isSoSang[0] = isSoSang[1] = false;
for(int i=2; i<=sqrt(n); i++) {
if(!isSoSang[i])
continue;
for(int j=i*i; j<=n; j+=i)
isSoSang[j] = false;
}
// μμμκ·Όμ νλ³
for(int i=2; i<=n; i++) {
if(!isSoSang[i]) // μμ μλλ©΄ μ΄ν΄λ³Ό νμλ μμ΄ λμ΄κ°λ€
continue;
int tmp = i;
vector<int> history;
while(true) {
if(tmp == 1) {
// μ! 1μ΄ λμλ€!
break;
}
if(count(history.begin(), history.end(), tmp) != 0) {
// μ! μνμ΄ λ°κ²¬λμλ€!
for(int j : history) // λμλ μ λ€ μ λΆ μκ·Όμ μ μΈ
isSoSang[j] = false;
break;
}
history.push_back(tmp);
tmp = sumOfDigit(tmp);
}
}
// μΆλ ₯
for(int i=2; i<=n; i++) {
if(isSoSang[i])
cout << i << "\n";
}
return 0;
}
'ποΈ ICPC Sinchon > Basic Math' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 4948λ²: λ² λ₯΄νΈλ κ³΅μ€ (0) | 2023.11.16 |
---|---|
[BOJ][C++] λ°±μ€ 2168λ²: νμΌ μμ λκ°μ (0) | 2023.05.31 |
[BOJ][C++] λ°±μ€ 2108λ²: ν΅κ³ν (0) | 2023.05.30 |
[BOJ][C++] λ°±μ€ 2981λ²: κ²λ¬Έ (0) | 2023.01.24 |
[BOJ][C++] λ°±μ€ 17087λ²: μ¨λ°κΌμ§ 6 (0) | 2023.01.24 |