코테
[코테] 백준 - 약수의 합2(17427)
2h1824
2025. 5. 2. 22:03
문제
- 자연수 N 제공
- 자연수 A의 약수의 합을 f(A)로 정의
- N보다 작거나 같은 모든 자연수들의 f(A)의 합을 g(N)이라 할때, g(N)을 구할 것
코드
#include <iostream>
#include <numeric>
#include <queue>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n=0;
cin>>n;
vector<long long> SumN(n+1,0);
for (int i=1;i<=n;i++)
{
for (int j=i;j<=n;j+=i)
{
SumN[j]+=i;
}
}
long long answer=accumulate(SumN.begin(),SumN.end(),0LL);
cout<<answer;
return 0;
}
풀이
- 에라토스테네스의 체 응용
- SumN: n+1개의 원소를 가진 배열 선언 ㅡ> 해당 수의 약수의 합(f(x) 저장용)
- i의 값을 1~n 까지 차례대로 값을 증가
- j의 값을 i~(n보다 작거나 같은 i의 배수) 까지 증가
- j의 값을 인덱스로 활용하여 SumN의 값에 누적
ㅡ> 반복문이 끝나면 모든 약수가 누적된 형태
참고자료
https://www.acmicpc.net/problem/17427
에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 에라토스테네스의 체 수학에서 에라토스테네스의 체는 소수를 찾는 빠르고 쉬운 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 2부터 소수를
ko.wikipedia.org