#include <stdio.h>
int num[1000]={0};
int cnt=0;
void put(int n); //2~n까지 수를 채워넣기
int search(int n, int k); //K번째로 지워지는 수 찾기
int sosu(int a); //소수인지 아닌지 판단
int basu(int a, int n, int k); //배수 찾아서 제거
int main(void)
{
int n, k, result;
scanf(" %d %d", &n, &k);
put(n);
result=search(n, k);
//printf("\n-----------------------\n");
printf("%d", result);
return 0;
}
void put(int n)
{
int i;
for(i=2; i<=n; i++)
{
num[i]=i;
}
}
int search(int n, int k)
{
int i, a=0;
for(i=2; i<=n; i++)
{
if(num[i]!=0 && sosu(i)==0)
{
num[i]=0;
cnt++;
//printf("%d ", i);
if(k==cnt)
return i;
a=basu(i, n, k);
if(a!=0)
return a;
}
}
}
int sosu(int a)
{
int i;
for(i=2; i<a; i++)
{
if(a%i==0) //소수가 아닌 경우
return 1;
}
return 0;
}
int basu(int a, int n, int k)
{
int i;
for(i=1; (i*a)<=n; i++)
{
if(num[i*a]!=0)
{
//printf("%d ", i*a);
num[i*a]=0;
cnt++;
if(k==cnt)
return i*a;
}
}
return 0;
}
2018.06.02 12:46
정올 - 실전대비 - RESETO(1232)
조회 수 210 추천 수 0 댓글 0