반응형

출처 : https://www.acmicpc.net/problem/1418
1418번: K-세준수
첫째 줄에 N, 둘째 줄에 K가 주어진다. N은 100,000보다 작거나 같은 자연수이고, K는 100보다 작거나 같은 자연수이다.
www.acmicpc.net
문제풀이) 소인수 분해 한 약수중 가장 큰수를 기준으로 k보다 작은 수를 찾는 것이다.
에라토스테네스 체를 치는 원리를 이용해서 소수이면 소수의 배수들을 찾아 가면서 소인수의 약수의 크기를 자신으로 변경 해 준다.
#include <iostream>
#define MAX 100010
using namespace std;
int arr[MAX];
int main()
{
int n,k;
int cnt=0;
cin >> n >> k;
for(int i=2;i<=n;i++)
{
if(arr[i]) continue; //소수가 아니면 건너 뛰자
for(int j=i;j<=n;j+=i)
{
arr[j]=max(arr[j],i);
}
}
for(int i=1;i<=n;i++)
{
if(arr[i]<=k) cnt++;
}
cout << cnt;
return 0;
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준1455-뒤집기II(브론즈1) (0) | 2020.09.13 |
---|---|
백준1453-피시방알바(브론즈1) (0) | 2020.09.12 |
백준1402-아무래도이문제는A번난이도인것같다(브론즈1) (0) | 2020.09.10 |
백준1388-바닥장식(브론즈1) (0) | 2020.09.09 |
백준1384-메시지(브론즈1) (0) | 2020.09.08 |