sw6448   8년 전

안녕하세요 !이 문제를 저는 n이 주어졌을때 n-1부터 1까지중 n의 약수가 나올때까지 count를 세주는거로 이해했습니다.

에라토스테니스의 체를 이용해서 2부터 35000까지 수를 arr배열안에 저장한다음 이 소스를 돌렸는데 왜 틀리는지 이해가안돼요 ㅠㅠ

n==1일때는 0이 나오게 처리해주었구요 제가 문제를 잘못 이해했는지 다른 예외처리를 못해주었는지 모르겠어요 ㅠㅠㅠ

ddaafftt   8년 전

제가 기억한것이 맞다면 (n - 자기 자신을 제외한 가장 큰 n의 약수) 이 답일겁니다.

보기에는 10이 주어졌는데 10의 약수는 1, 2, 5, 10 가 있고, 조건에 따라 10 - 5를 해주면 5가 나오게 됩니다.

소수가 주어졌을 경우에는 약수가 1밖에 없기 때문에 n - 1 의 값이 나올 것이구요.

이와 같이 수정을 해보시면 될듯합니다.

sw6448   8년 전

그렇게 했었는데 소수 배열을 40000까지 만들어놔서 40000이상의 소수를 처리하는부분에서 계속 틀리고있었네요 ㅠㅠㅠㅠ

예외처리해서 풀었어요 감사합니다!!

xowns9418   7년 전

데이터의 범위가 10^9인데 에라토스 테네스의 체를 사용하려면 10^9만큼의 1차원배열이 필요한데  1차원 배열은 이만큼 할당할 수 없지 않나요??

sw6448   7년 전

xowns9418님 안녕하세요.

n의 약수에는 n의 루트의 약수들도 반드시 포함이 된다는 성질을 이용하면 10^9 의 루트의 값만 가지고 문제를 해결할 수 있습니다!

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