void shai(int n)
{
int i,j,cnt;
cnt = 0;
memset(su,0,sizeof(su));
memset(prime, true, sizeof(prime));
prime[1] = prime[0] = false;
for(i = 2; i <= n; ++i) {
//cout << prime[i] << endl << endl;
if(prime[i])
su[cnt++] = i;
for(j = 0; j < cnt && su[j]*i <= n; ++j){
prime[su[j]*i] = false;
if(i%su[j] == 0)
break;
}
}
//for(i=0 ; i<cnt; ++i)
// printf("%d\n",su[i]);
return ;
}
其实优化就在 i%su[j] == 0这上面
首先 任何数都是由若干个质因子构成的,假如
浙公网安备 33010602011771号