Leetcode刷题java之204. 计数质数(一天一道编程题之第二十一天)

向右看齐 2023-07-13 12:25 84阅读 0赞

执行结果:

通过

显示详情

执行用时 :14 ms, 在所有 Java 提交中击败了80.36% 的用户

内存消耗 :39.5 MB, 在所有 Java 提交中击败了16.23%的用户

题目:

统计所有小于非负整数 n 的质数的数量。

示例:

输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-primes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

创建一个boolean数组,用排除法,倍数不是质数。

优化:外层循环到开方,内层循环从平方开始

代码:

  1. class Solution {
  2. public int countPrimes(int n) {
  3. boolean[] isprime=new boolean[n];
  4. for(int i=2;i*i<=n;i++)
  5. {
  6. if(!isprime[i])
  7. {
  8. for(int j=i*i;j<n;j+=i)
  9. {
  10. isprime[j]=true;
  11. }
  12. }
  13. }
  14. int result=0;
  15. for(int i=2;i<n;i++)
  16. {
  17. if(!isprime[i])
  18. {
  19. result++;
  20. }
  21. }
  22. return result;
  23. }
  24. }

发表评论

表情:
评论列表 (有 0 条评论,84人围观)

还没有评论,来说两句吧...

相关阅读