leetcode 204题求素数个数
Description:
Count the number of prime numbers less than a non-negative number, n
提示晒数法:
http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
https://primes.utm.edu/howmany.html
别人的代码:
int countPrimes(int n) {
if (n<=2) return 0;
vector<bool> passed(n, false);
int sum = 1;
int upper = sqrt(n);
for (int i=3; i<n; i+=2) {
if (!passed[i]) {
sum++;
//avoid overflow
if (i>upper) continue;
for (int j=i*i; j<n; j+=i) {
passed[j] = true;
}
}
}
return sum;
}
我的代码:
// countprime.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <iostream>
#include <math.h>
#include<vector>
using namespace std; int countPrimes1(int n)
{
int temp = 0;
if (2 >= n) return 0; bool* primes = new bool[n];
for (int i = 2; i < n; ++i)
primes[i] = true; int sqr = (int)(sqrt((double)(n - 1)));
for (int i = 2; i <= sqr; ++i)
{
if (primes[i])
{
temp++;
for (int j = i * i; j < n; j += i)
primes[j] = false;
}
} int sum = 0;
for (int i = 2; i < n; ++i)
sum += (primes[i]) ? 1 : 0; /*cout<<temp;*/
delete[] primes; return sum;
} int countPrimes(int n)
{
if (n<=2)return 0; int sum = 0;
int sqr = (int)(sqrt((double)(n - 1))); vector<bool> prime(n,0); for(int i = 2; i < n; ++i)
prime[i] = 1; for(int i =2; i <= sqr; ++i)
{
if(prime[i]==1)
{
//sum++;
for(int j = i*i; j < n; j = j+i)
prime[j] = 0;
} } for(int i = 2;i < n; ++i)
sum += prime[i] ? 1 : 0; return sum;
} int _tmain(int argc, _TCHAR* argv[])
{ cout<<countPrimes(5)<<endl; cout<<countPrimes1(3)<<endl; getchar();
return 0;
}
超时代码:
int countPrimes(int n)
{
int sum = 0;
for(int i = 0 ;i<=n;i=i+2)
{
int j = 2;
int temp = sqrt(i);
for(;j<=temp;j=j+1)
{
if((i%temp)==0)
{break;}
sum++;
}
} return sum;
}
纪念一下首次AC
leetcode 204题求素数个数的更多相关文章
- LeetCode Count Primes 求素数个数(埃拉托色尼筛选法)
题意:给一个数n,返回小于n的素数个数. 思路:设数字 k =from 2 to sqrt(n),那么对于每个k,从k2开始,在[2,n)范围内只要是k的倍数的都删掉(也就是说[k,k2)是不用理的, ...
- 子序列 sub sequence问题,例:最长公共子序列,[LeetCode] Distinct Subsequences(求子序列个数)
引言 子序列和子字符串或者连续子集的不同之处在于,子序列不需要是原序列上连续的值. 对于子序列的题目,大多数需要用到DP的思想,因此,状态转移是关键. 这里摘录两个常见子序列问题及其解法. 例题1, ...
- C#LeetCode刷题之#628-三个数的最大乘积( Maximum Product of Three Numbers)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3726 访问. 给定一个整型数组,在数组中找出由三个数组成的最大乘 ...
- 求素数个数的优化-LeetCode204
问题 计数质数 统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 第一种解法容易想到但是会 超时 ...
- How many prime numbers(求素数个数)
How many prime numbers Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- 求小于n的素数个数
本文是对 LeetCode Count Primes 解法的探讨. 题目: Count the number of prime numbers less than a non-negative num ...
- C#LeetCode刷题-数学
数学篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 ...
- C#LeetCode刷题-数组
数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...
- SPOJ CNTPRIME 13015 Counting Primes (水题,区间更新,求区间的素数个数)
题目连接:http://www.spoj.com/problems/CNTPRIME/ #include <iostream> #include <stdio.h> #incl ...
随机推荐
- swing JTable 更新数据
rowData 是将要更新的表格内数据,coloumnName是将要更新的表头数据. table是原本的table对象,更新数据的时候要用 DefaultTableModel 类~ /*更新table ...
- 0428-css样式
一.CSS样式表 引入的三种方式1.内联样式:标签内部 style2.内嵌样式:<head></head>标签内部(<style></sty ...
- Android源码解析——AsyncTask
简介 AsyncTask 在Android API 3引入,是为了使UI线程能被正确和容易地使用.它允许你在后台进行一些操作,并且把结果带到UI线程中,而不用自己去操纵Thread或Handler.它 ...
- RunLoop总结:RunLoop 与GCD 、Autorelease Pool之间的关系
如果在面试中问到RunLoop相关的知识,很有可能也会问到RunLoop与GCD.Autorelease Pool有没有关系,哪些地方用到了GCD.Autorelease Pool等. So,本文就总 ...
- Hibernate之SchemaExport的使用
@Test public void testCreateDB(){ Configuration cfg = new Configuration().configure(); SchemaExport ...
- dimens.xml详解
本文联合两篇博文和自身理解写下 其中一篇:http://blog.csdn.net/hnzcdy/article/details/50628993 另一篇:暂不知原作者 Android中官方建议的屏幕 ...
- 如何扩展/删除swap分区
背景: 由于安装Oracle 的时候,swap太小只划分了4G,后期发现交换分区太小,不满足使用,于是进行了swap分区的扩容过程: swap分区的扩展很简单,但是需要root用户权限 ...
- GitHub Android Librarys Top 100 简介
GitHub Android Librarys Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索J ...
- Matplotlib Toolkits:地图绘制工具
Matplotlib Toolkits:地图绘制工具 有没有一种可以直接在详细地图(如谷歌地图)上绘制上百万坐标点的工具???谷歌地图坐标点多了也不能绘制了. Basemap (Not distrib ...
- XMPP 测试工具
XMPP 测试工具(金庆的专栏 2016.10)XMPP的客户端Pidgin有个Debug Window, 可以显示所有发送和接收的xml节.但是无法发送任意的自定义节.<XMPP高级编程-使用 ...