就是在验证K是不是质数的时候只要看是否能被比sqrt(K)小的质数整除就行了,所以查 这一个的复杂度是O(N^0.5),而共有N个数要验证,就是O(N*N^1/2)了。。。比起sieve of eratosthenes的O(N)是要慢很多了 但是用sieve of eratosthenes的话要用N/8个byte的空间,而当N很大时质数在数据集 里的分布相当稀疏,远远没有N/8,因此如果只保存所有的质数的话可以大大节省空间
sorry, I can't input Chinese now. I remember reading the idea of "验证K是不是质数的时候只要看是否能被比sqrt(K) 小的质数整除就行了" somewhere. what is the name of the theory? In order to know all the primes that are less than sqrt(k) when k is 10^7, we might need temporary storage, such as array.
sieve
【在 g*****x 的大作中提到】 : 就是在验证K是不是质数的时候只要看是否能被比sqrt(K)小的质数整除就行了,所以查 : 这一个的复杂度是O(N^0.5),而共有N个数要验证,就是O(N*N^1/2)了。。。比起sieve : of eratosthenes的O(N)是要慢很多了 : 但是用sieve of eratosthenes的话要用N/8个byte的空间,而当N很大时质数在数据集 : 里的分布相当稀疏,远远没有N/8,因此如果只保存所有的质数的话可以大大节省空间
l*6
19 楼
多少米出?
【在 b******m 的大作中提到】 : 我有个盒子还没开封的,连蓝牙小音响一起的
h*3
20 楼
yes. for large data, need to be very careful, for example: for(i=2;iif(a[i]!=false) for(j=i;j*ia[i*j]=false; } if i*j can't be represented by int, overflow, the code will throw ArrayIndexOutOfBoundsException. one way is to check i*j>0, but it would affect performance one way is changing from int to long, but if affect array indexing. not sure whether there are perfect solution?
【在 t**v 的大作中提到】 : sieve of eratosthenes is good enough for interview.