這樣可以有大約O(根號(最大質因數)),0ms
#include<stdio.h>
int main(){
int x,res,cur;
while (scanf("%d",&x)!=EOF){
res=0;
while ((x&1)==0){//2是唯一的偶數質數 先處理 快一點點
res+=2;
x>>=1;
}
cur=3;
while (x!=1 && (cur*cur)<=x){//還沒分解完且未到根號x
if(x%cur){cur+=2;}//下個數 繼續跑
else{res+=cur;x/=cur;}//可分解就分解並加入答案
}
if(x==1){printf("%d\n",res);}//分解完了
else{printf("%d\n",x+res);}//x是質因數 也要加
}
return 0;
}