## Extra 1 This article will not directly provide the answer code, but will give you a few hints and explain which ideas should be inappropriate. ## Description [Problem link](https://oj.cerana.tech/contest/6/problem/1) Check if a number 'n' is a Carrey's number. The essence of this question is how to quickly factorize a number into prime factors. ## Approach 1: Brute force search (TLE) ```C++ long long sum=0; for(long long i=2;i<=n;++i){ while(n%i==0){ n/=i; sum+=i; } } ``` Although the above code seems to be able to quickly converge on some cases, when it encounters some large factors, it must be executed for a very long time. e.g. n = f1^5 * f2^4 * f3^7 * .... * fx; This code must at least run to fx. When fx is very large, it will time out. ## Approach 2: Random guess (0.0...01% AC) Think carefully about the following code: ```C++ long long sum=0; do{ long long x=rand(2~n); if(n%x==0){ n/=x; sum+=x; } }while(n!=1); ``` As long as you are lucky enough, rand will appear prime numbers every time, and they happen to be factors of n. Although this code looks like it was written by a monkey, it is actually the right path. ## To be continued...