线性筛。注意循环终止条件不要写成判断,否则及影响效率又可能导致re
1 for(int i = 2;i <= m;i++){ 2 if(!not_p[i])prime[++cntp] = i; 3 for(int j = 1;j <= cntp;j++){ 4 if(i*prime[j] > m)break; 5 not_p[i*prime[j]] = 1; 6 if(i%prime[j] == 0)break; 7 } 8 }
线性筛。注意循环终止条件不要写成判断,否则及影响效率又可能导致re
1 for(int i = 2;i <= m;i++){ 2 if(!not_p[i])prime[++cntp] = i; 3 for(int j = 1;j <= cntp;j++){ 4 if(i*prime[j] > m)break; 5 not_p[i*prime[j]] = 1; 6 if(i%prime[j] == 0)break; 7 } 8 }