Count Primes - LeetCode
examination questions
Description:
Count the number of prime numbers less than a non-negative number, n
Please use the following function to solve the problem:
int countPrimes(int n){
}
解题代码
int countPrimes(int n) {
if (n == || n == || n == ){
return ;
}
if (n == ){
return ;
} int temp = ;
bool flag = false;
int arr[] = { '\0' };
int k = ;
arr[] = ; for (int i = ; i < n; i++){
for (int j = ; j <= k; j++){
if (i%arr[j] == ){
flag = true;
break;
}
} if (flag == false){
if (k < ){
k++;
arr[k] = i;
i++;
}
temp++;
}
else{
flag = false;
}
} return temp+;
}
基本算法思想
判断一个数是否是质数, 仅需判断这个数是否能被比这个数小的质数整除, 若不能, 就是质数.
代码注释分析
int countPrimes(int n) {
//题目要求输入的测试值是非负数,所以必须包含0,1的特殊情况
//由于2的结果也是0,所以也包含了进去
if (n == || n == || n == ){
return ;
}
//为了方便后面的算法设计,要单独把3拿出来
if (n == ){
return ;
} int temp = ;//定义一个计数器,用来记有多少个质数
bool flag = false;//标记,用来判断该数是否是质数
int arr[] = { '\0' };//最为基数的质数的量的最大值设置为200,可以测试10的6次方量级
int k = ;//用来计数质数的个数的,也就是arr的下标
arr[] = ;//第一个质数赋值为2 for (int i = ; i < n; i++){ //这个循环符合n>=4的情况,遍历所有小于n的数,一一进行检测
for (int j = ; j <= k; j++){ //如果这个数能被arr[0]~arr[k]整除,说明它不是质数,flag变为true
if (i%arr[j] == ){
flag = true;
break;
}
} if (flag == false){ //如果flag没有变成true,那么说明它是质数
if (k < ){ //我们要求arr质数仅需要200个,超出的不计入!
k++;
arr[k] = i; //把这个质数也加入arr数组中
i++;//一个质数被判断为质数后,它的后面一个数字不可能是质数(除了2和3之外),所以用i++来减少对不不要数的检测
}
temp++; //质数量+1
}
else{
flag = false; //把flag 再初始化为false,回到最初状态,用于判断下一个数值
}
} return temp + ;//+1是因为要加上 2 这个质数,上面的temp中不包括2
}
此外, 有以下解题方法供参考(由 stevenczp 提供):
int countPrimes(int n) {
bool* map = (bool*)malloc(n * sizeof(bool));
memset(map, , n * sizeof(bool)); for (int i = ; i <= sqrt(n); i++)
{
if (map[i])
continue;
int t = * i;
while (t < n)
{
map[t] = true;
t += i;
}
} int result = ;
for (int i = ; i < n; i++)
{
if (!map[i])
result++;
}
return result;
}
关于本题的详细解题过程, 请点击这里:
Count Primes - LeetCode的更多相关文章
- 204. Count Primes - LeetCode
Queston 204. Count Primes Solution 题目大意:给一个数,求小于这个数的素数的个数 思路:初始化一个boolean数组,初始设置为true,先遍历将2的倍数设置为fal ...
- Count Primes ——LeetCode
Description: Count the number of prime numbers less than a non-negative number, n. 题目大意:给一个int,返回小于它 ...
- [leetcode] 204. Count Primes 统计小于非负整数n的素数的个数
题目大意 https://leetcode.com/problems/count-primes/description/ 204. Count Primes Count the number of p ...
- [leetcode] Count Primes
Count Primes Description: Count the number of prime numbers less than a non-negative number, n click ...
- leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes
263. Ugly Number 注意:1.小于等于0都不属于丑数 2.while循环的判断不是num >= 0, 而是能被2 .3.5整除,即能被整除才去除这些数 class Solution ...
- 【刷题-LeetCode】204. Count Primes
Count Primes Count the number of prime numbers less than a non-negative number, *n*. Example: Input: ...
- LeetCode_204. Count Primes
204. Count Primes Easy Count the number of prime numbers less than a non-negative number, n. Example ...
- HDU 5901 Count primes 论文题
Count primes 题目连接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5901 Description Easy question! C ...
- hdu 5901 Count primes (meisell-Lehmer)
Count primes Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
随机推荐
- 开发回归测试之Selenium开发环境搭建
前言 在解bug的过程中,经常遇到解完某个bug带来新的bug,原因一般是因为回归测试不足或不全面,下面我们来看看怎么利用selenium工具来完成开发后的回归测试, 虽然这可能是QA的事,不过有利于 ...
- 滚轮事件js
<!DOCTYPE html> <html> <head> <title>jane</title> <style>div ...
- phpcms流程
phpcms流程1: 安装 将下载好的文件放到www目录下 地址栏中输入 http://localhost/phpcms/install_package/install 打开安装页面 进行安装即可. ...
- LINUX VI 常用命令
vi 打开或新建 vi filename 打开或新建文件 并将光标置于第一行首 光标 ) 光标移至句尾 ( 光标移至句首 屏幕翻滚类命令 Ctrl+u 向文件首翻半屏 Ctrl+d 向文件尾翻半屏 ...
- ecshop增加新字段及相应编辑器
一.在数据库添加字段,会手写的就后台添加,不会就进入phpmyadmin默认的就行. 这是通用的写法:(这里是增加类似商品描述的字段,其他字段自行更改) ALTER TABLE `ecs_g ...
- CSS之border
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- form submit时将__VIEWSTATE和__VIEWSTATEGENERATOR一起post到另外的页面,出现验证视图状态 MAC 失败。
错误信息: 验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法.不能在群集中使用 AutoGenerate. 原因分析: F ...
- Map的简单语法
package jaxpsax; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; i ...
- 关键字static/const的作用
static关键字的作用:(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值:(2)限制变量的作用域 ...
- LUA实现单词替换功能
背景描述 编程或者文档处理过程, 经常遇到需要将一个单词修改为另外一个单词的情况, 例如 命名为 shall 修改 为 should. 使用工具实现, 则比较方便,不容易出错, 解放双手. 需求规格 ...