== 소감 == 블로그에 적은데에서 조금더 빠르게 만들었다. 누가 1억을 3-4초안에 출력하게 해주..ㅠ.ㅜ (참고로 이 소스는 12-13초 걸린다.) 결국 입력은 무슨 말인지 몰라서 내맘대로 정해버렸다. cin..ㅎㅎㅎ 누가 설명좀 해주..ㅎㅎ 그러고보니 우리집 컴퓨터의 성능을 고려하지 않았다...;; 뭐 다른집도 비슷하리라 생각한다..^^;; 3.2G CPU...OTL.. 보창형 심심하실까봐~ 어제 생각한대로 약간 수정했다. 더빠르게할 다른 방법도 있는것 같지만 일단 이거부터~ 1억을 기준으로 테스트 했을때 13초->10초정도의 향상이 있다. T.T 별로 많이 빨라지지는 않았네.. == 소스 == {{{~cpp #include #include using namespace std; unsigned int factorial_factors(unsigned int); void main() { cout << "2-1000000사이의 숫자를 입력해주세요.조건에 맞지않는 숫자를 입력하면 종료됩니다.\n"; cin >> input_number; while (1) { cout << factorial_factors(input_number) << "\n"; cin >> input_number; } } unsigned int factorial_factors(unsigned int answer) { unsigned int *log_answer = (unsigned int*)malloc((answer+2)*sizeof(unsigned int)); unsigned int sum = 1; unsigned int gab; unsigned int suchEnd = (unsigned int)sqrt((double)answer); log_answer[2]=1; log_answer[3]=0; for (register unsigned int i=4; i<=answer;i+=2) { log_answer[i]=2; log_answer[i+1]=0; } for (register unsigned int i=3; i<=suchEnd; ++i) { if (0==log_answer[i]) { log_answer[i]=1; gab=i+i; for(register unsigned int j = i * i; j <= answer; j+= gab) log_answer[j] = i; ++sum; } else sum+=log_answer[i]=log_answer[i/log_answer[i]]+1; } for (register unsigned int i = suchEnd + 1; i <= answer; ++i) { if (0==log_answer[i]) { log_answer[i]=1; gab=i+i; ++sum; } else sum+=log_answer[i]=log_answer[i/log_answer[i]]+1; } free(log_answer); return sum; } }}} == 나에게 할말 == 울집 1.4G인데 ㄱ-;;;; 이거 한번 도전해볼까나;; -태훈 해봤어. 잘돌아가더라. 다른컴퓨터에서도..ㅎㅎㅎ 여전히 실행하면 바로뜨던데? 100만정도는 ㅎㅎ-[조현태] 이야 뭐가뭔지 몰르겟어 넘 고난의도의 스킬을 ㅋㅋㅋㅋ -[김영록] ---- [AOI] [FactorialFactors]