#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)
조회 수 172 추천 수 0 댓글 0