/**
n>=3 and n is odd. */ int isPrime(int n) { int k, upperBound=n/2; for(k=3; k<=upperBound; k+=2) { upperBound=n/k; if(n%k==0) return 0; } return 1; } |
假设n=A*B 则只需要测试不大于min(A,B)的数就能找到n的一个因子,每次加2而不会漏掉因子二是因为假设
n=2*A(则经过有限次后k会到达A),能找到n的一个因子A,同样不会误判n为素数