/* * @lc app=leetcode.cn id=204 lang=c * * [204] 计数质数 * * https://leetcode-cn.com/problems/count-primes/description/ * * algorithms * Easy (26.72%) * Total Accepted: 13.8K * Total Submissions: 51.6K * Testcase Example: '10' * * 统计所有小于非负整数 n 的质数的数量。 * * 示例: * * 输入: 10 * 输出: 4 * 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 * * */ int countPrimes(int n) { int i,j,count=0; if(n<=2){ return 0; } for(i=2;i<=n;i+=2){ for(j=2;j<=sqrt(i);j++){ if(i%j==0){ break; } } if(j>sqrt(i)) count++; } return count; }
统计质数还是很简单的。
-------------------------------
python:
# # @lc app=leetcode.cn id=204 lang=python3 # # [204] 计数质数 # # https://leetcode-cn.com/problems/count-primes/description/ # # algorithms # Easy (26.72%) # Total Accepted: 13.8K # Total Submissions: 51.6K # Testcase Example: '10' # # 统计所有小于非负整数 n 的质数的数量。 # # 示例: # # 输入: 10 # 输出: 4 # 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 # # # class Solution: def countPrimes(self, n: int) -> int: if n <= 2: return 0 res = [True] * n res[0] = res[1] = False for i in range(2, n): if res[i] == True: for j in range(2, (n-1)//i+1): res[i*j] = False return sum(res)