两种 eratosthenes 筛法的时间比较,第二种快很多会比较好用

#include<cstdio>

#include<cmath>

#include<cstring>

#include<algorithm>

using namespace std;

const int maxn = 10000005;

int vis[maxn];

int n;

//int eratosthenes()

//{

//    memset(vis,0,sizeof(vis));

//    for(int i=2;i<=n;i++)

//    {

//        for(int j=i*2;j<=n;j+=i)

//            vis[j]=1;

//    }

//}

int eratosthenes()///当算到10000000时快大概4秒的时间。此方法大概一秒能算出所有素数。

{

memset(vis,0,sizeof(vis));

for(int i=2;i<=(int)(sqrt(n)+0.5);i++)

{

if(!vis[i])

for(int j=i*i;j<=n;j+=i)

vis[j]=1;

}

}

int main()

{

scanf("%d",&n);

eratosthenes();

int cnt=0;

for(int i=2;i<=n;i++)

{

if(!vis[i])

{

cnt++;

//            printf("%d ",i);

}

}

printf("\nthe number :%d\n",cnt);

return 0;

}

两种 eratosthenes 筛法的时间比较,第二种快很多会比较好用

时间: 2024-10-03 21:53:34

两种 eratosthenes 筛法的时间比较,第二种快很多会比较好用的相关文章

用2种内存模型来排序字符串的的顺序,一种是交换内存地址,第二种是交换内存里面的值;

#define _CRT_SECURE_NO_WARNINGS #include"stdio.h" #include"stdlib.h" #include"string.h" void MyPrintf(char **); void MYSORT(char **, int); void SORTBUF(char **); void main() { int i = 0; int j = 0; char *buf; char **myarray;

Spring+Struts集成(第二种方案)

在上一篇文章中我们了解到了第一种Spring跟Struts集成的方案,但此集成方案的不足是WEB层中知道Spring的相关内容,因为需要去主动的查找对象:BeanFactory.方案二便是通过依赖注入的方式来进行.通过Spring提供ActionProxy进行代理.去获取BeanFactory,找到Path的名称,然后找到path路径下的Action,然后完成注入. 方案二的核心:Struts的核心交给Spring来创建.Spring跟其他框架集合主要也是通过此种方式. 方案二集成框架图: sp

今天看到别人的面试算法题,求找出十包粉末中两包蓝色粉末的最短时间

题目:有4个杯子,10包粉末,其中有2包溶于水变蓝,其余无色,粉末溶于水2min才能显现颜色.求找出两包蓝色粉末的最短时间.假设水和粉末用不完. 方法一: 第一趟:[12,34,56,78] 每个杯子分别放两包加水融化,剩下两包不管.可能的情况: (1)0个杯子变色,说明剩下两包就是蓝粉末 (2)1个杯子变色,则蓝粉末在这个杯子两包和未融化的两包其中两包,第二趟四包融化一定可以找到 (3)2个杯子变色,则在这两个杯子的四包粉末中,第二趟可找到. 时间均值:E = 2*1/45 + 4*44/45

GPRS GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术

GPRS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术.GPRS可说是GSM的延续.GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输,因此使用者所负担的费用是以其传输资料单位计算,并非使用其整个频道,理论上较为便宜.GPRS的传输速率可提升至56甚至114Kbps.[1]

Eclipse 常用技巧 第一种:直接复制法 解决方法是: 第二种:使用link文

快捷方式 0. Ctrl + 1 (快速修复) 1. Ctrl + D (删除当前行) 2. Ctrl + Alt + ↓(复制当前行到下一行) 3. Alt + / 或者说是 Ctrl + 空格(由于后者与输入法的快捷键冲突,所以,我一般都用前者) 作用:快速插入. 4. Alt+Shift+R 重命名非常好用. 5. Ctrl + Q 定位到最后编辑的地方. 6. Ctrl + Shift + O 自动导入包. 7. Ctrl+/ 注释当前行,再按则取消注释. 8. Ctrl+K快速查找.

(转)时间是一种资本,你能做好它的投资人吗?读《时间管理投资法》 (江湖一颗豆)

[推荐语]流光容易把人抛,红了樱桃,绿了芭蕉.( 一剪梅·舟过吴江 )时间易逝,我们如何管理时间,通过投资时间获得更多收益?你只要翻开这本书就能找到答案,这本书是我看过关于时间管理最有效的书,没有之一. 我是09年读到的这本书,到现在已经快五年时间,期间一直坚持用了很多方法来改善自己对时间的使用.不能说做的多么好,但确实有了很大的提高,基本上在保证正常工作生活的情况下,一年可以国内外旅行3-5次,读300本书,每周保持锻炼.现在回首这五年,自己的人生的确有了很大的改变,变得更加富有成效,也更加幸

事件绑定的第二种形式

一.过去,给一个对象绑定一个事件,来处理函数的形式,如obj.onclick=fn1,我们称之为事件绑定的第一种形式(赋值形式). 这种形式的有一种缺点就是:同一个对象的同一个事件不能同时处理两个不同的函数. 例如: function fn1(){ alert("A") } function fn2(){ alert("B") } document.onclick=fn1; document.onclick=fn2;//后面一个事件会覆盖前面一个事件 二.为了解决上

C语言获取系统时间的几种方式

C语言获取系统时间的几种方式 2009-07-22 11:18:50|  分类: 编程学习 |字号 订阅 C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒3 计算时间差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount() 精确到毫秒5 如果使用

善用良器:帮你有效管理时间的7种工具

善用良器:帮你有效管理时间的7种工具 时间管理很重要,但是,这已沦为了一个烂大街的主题. 我们都听说过"时间管理不得不知的99个技巧",在手机上装过这个那个时间管理App,我们往往花了很多时间去学各种管理时间的技巧,学了十八班武艺却样样稀疏.最后,学习时间管理的时间,却沦为浪费时间的元凶. 实际上,我们需要的是一个系统化的时间管理解决方案. 时间管理,是个人的管理学,和公司管理一样,需要从"认识自己"出发,再针对自己的弱点去锤炼基本功,管理多任务,让自己忙而不乱.我