厄拉多塞筛法求质数
统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
思路:如果当前数为质数,则其倍数就不是质数
public int countPrimes(int n) { int[] a=new int[n]; for(int i=0;i<n;i++){ a[i]=1; } for(int i=2;i<n;i++){ if(a[i]==1){ for(int j=2;i*j<n;j++){ a[i*j]=0; } } } int num=0; for(int k=2;k<n;k++){ if(a[k]==1){ num++; } } return num; }
不积跬步,无以至千里;
不积小流,无以成江河;