dlalsrl   7년 전

먼저 소수인지 아닌지를 1~10000까지 구합니다.


그후 bfs를 사용하여 1000의자리 100의 자리 10의자리 1의 자리를 바꾸면서 

업데이트를 합니다. 그런대 틀리네요 ㅠㅠ


무었이 틀렸는지 지적해주세요요

koosaga   7년 전

for(int i=2;i<10000;i++){
        if(prime[i] == 0){
            int s = 10000/i;
            for(int j=2;j<s;j++){
                prime[j*i] = 1;
            }
        }
    }


-> i = 101이 됐다고 치면, s = 99고, j < 99니 i * j = 9999인 케이스가 안 됩니다. 

헷갈리는 코딩은 최대한 피하고

for(int j=2;i*j<=10000;j++){
                prime[j*i] = 1;
            }


이렇게 하는 편을 추천드립니다

댓글을 작성하려면 로그인해야 합니다.