题目描述
给定整数 n
,返回 所有小于非负整数 n
的质数的数量 。
思路
代码
class Solution {
public:
bool isPrime(int x) {
for (int i = 2; i * i <= x; ++i) {
if (x % i == 0) {
return false;
}
}
return true;
}
int countPrimes(int n) {
int ans = 0;
for (int i = 2; i < n; ++i) {
ans += isPrime(i);
}
return ans;
}
};
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
class Solution {
public:
static bool isPrime(int x) {
for (int i = 2; i * i <= x; ++i) {
if (x % i == 0) {
return false;
}
}
return true;
}
int countPrimes_lambda(vector<int>& nums) {//lambda函数
int mycount = count_if(nums.begin(), nums.end(), [&](int i) {return isPrime(i); });
return mycount - 1;//质数不包括1
}
int countPrimes1(vector<int>& nums) {//用类的成员函数来作为一个函数的参数,要把成员函数设为静态的
int mycount = count_if(nums.begin(), nums.end(), isPrime);
return mycount - 1;//质数不包括1
}
int countPrimes(int n) {
int ans = 0;
for (int i = 2; i < n; ++i) {
ans += isPrime(i);
}
return ans;
}
};
int main() {
int n;
cin >> n;
vector<int> nums;
for (int i = 1; i <= n; i++) {
nums.push_back(i);
}
Solution obj;
int ans = obj.countPrimes1(nums);
cout << ans;
}