티스토리 뷰

백준/실버

[백준 1418번] K-세준수

게임개발기원 2025. 7. 7. 00:44

문제링크 : https://www.acmicpc.net/problem/1418

#include <bits/stdc++.h>
using namespace std;

int arr[100001];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, K;
    cin >> N >> K;

    for(int i=2; i<=N; i++)
    {
        if(arr[i]) continue;
        for(int j=i; j<=N; j+=i)
        {
            arr[j] = i;
        }
    }

    int cnt=0;
    for(int i=1; i<=N; i++)
    {
        if(arr[i]<=K) cnt++;
    }

    cout << cnt;

    return 0;
}

 

입력받은 N을 토대로, 2~N까지 값에 대해 소인수 값을 체크해준다.

해당 j 및 j의 배수에 대해 현재 소인수 i를 모두 넣어준다.

이를 반복하며, ~N까지 모든 소인수를 갱신하며 소인수 중 최대값을 저장하게 된다.

 

이후에 해당 값들을 다시 순회하며 K보다 크지 않은 경우에 카운팅후 출력하면 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함