//筛选素数表 #include<iostream> int prime[100001];//记录素数数据,prime[0]为素数表的元素个数 bool is_prime[1299710];//标号匹配 //筛选法生成素数表模板,感觉像容斥原理,把非质数的标为false void prime_list() { memset(is_prime,true,sizeof(is_prime));//初始化素数表 for (int i = 2;i <= 1299709;i++) { if (is_prime[i])//如果在素数表中匹配的 { prime[++prime[0]] = i;//++prime[0],增加素数的个数 } for (int j = 1,k; (j <= prime[0]) && (k = i * prime[j]) <= 1299709;j++) //筛选循环 { is_prime[k] = false; if(i % prime[j] == 0) break;//很关键的步骤 } } } int main() { prime_list(); int n,a,b; while(scanf("%d",&n)) { a = b = n; if(n == 0) break; while(!is_prime[a]) a++; while(!is_prime[b]) b--; printf("%d/n",a-b); } return 0; }