시간 줄이는 법

kimjeeyoung Reply 3 years 47 weeks ago
안녕하세용! 어떻게 어떻게 하다가 맞긴 했는데요 ㅠㅠ 다른 분들 시간 보니까 0ms도 있으시던데 시간을 어떻게 더 줄일 수 있을까요? 오일러 파이 함수 활용은 곱하는 공식 말씀하신 건가요? 따로 함수 만들어서 활용하는 법은 잘 모르겠습니다..ㅠㅠ 그리고 밑에 TLE 관련 질문 답변 봤는데 ----------------------------------------------------------------------------- i와 n이 서로소가 아니라면 i가 n으로 나누어떨어지거나, 2 이상 루트i 이하의 공약수를 가집니다. sqrt(i)까지만 탐색하면 더 빨라질거예요 ----------------------------------------------------------------------------- 라는 답변이 있어서 활용하려고 했는데 85,34는 공약수로 17을 가지는데 17은 루트85 이하가 아닌 것 같아서요 ㅠㅠㅠ 뭔가 다른 조건이 있나요?
withcs2 Reply 3 years 47 weeks ago
해당 답변은 코드에 다른 조건이 더 있어서 그렇게 남겼던 거였습니다.. 그냥 성립하지는 않아요ㅠㅠ 오일러파이 공식 지금 사용하신 방법대로 만드는 것 맞습니다! 강의자료에서 n의 약수 갯수 찾을 때 2 이상 루트n이하까지만 탐색해서 찾았던 것 혹시 기억하시나요? 그 코드를 활용해서 반복문 범위를 2이상에서 sqrt(num)이하 까지로 줄이면 됩니다!
withcs2 Reply 3 years 47 weeks ago
힌트를 드리자면 60의 약수는 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60 이고, 이 중 루트60 이하인 수는 1, 2, 3, 4, 5, 6 루트60 이상인 수는 60, 30, 20, 15, 12, 10