关于素数的那点小事儿

HDOJ:2161

 1     #include<cstdio>
 2     #include<cstring>
 3     const int MAXN = 16100;
 4     bool prime[MAXN];
 5     void init(){
 6         memset(prime,true,sizeof(prime));
 7         prime[0]=prime[1]=false;
 8         for(int i = 2; i < MAXN; i++){
 9             if(prime[i]){
10                 if( i>MAXN/i )
11                     continue;
12                 for(int j=i*i; j<MAXN; j+=i)
13                     prime[j]=false;
14             }
15         }
16         prime[2]=false;
17     }
18     int main(){
19         init();
20         int tmp;
21         int T = 0;
22         while(~scanf("%d",&tmp)){
23             if( tmp <= 0 )
24                 break;
25             printf("%d: ",++T);
26             if(prime[tmp])
27                 printf("yes\n");
28             else
29                 printf("no\n");
30         }
31     }

POJ: 2689

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 using namespace std;
 6 const int MAXN = 100010;
 7 int prime[MAXN+1];
 8 void getPrime(){
 9     memset(prime,0,sizeof(prime));
10     for( int i=2; i<=MAXN; i++){
11         if(!prime[i])
12             prime[++prime[0]]=i;
13         for(int j=1; j<=prime[0]&&prime[j]<=MAXN/i;j++){
14             prime[prime[j]*i]=1;
15             if(i%prime[j]==0)
16                 break;
17         }
18     }
19 }
20 bool notPrime[1000010];
21 int prime2[1000010];
22 void getPrime2( int L, int R){
23     memset(notPrime,false,sizeof(notPrime));
24     if(L<2)
25         L=2;
26     for(int i=1; i<=prime[0]&&(long long)prime[i]*prime[i]<=R;i++){
27         int s=L/prime[i]+(L%prime[i]>0);
28         if(s==1)            s=2;
29         for(int j=s;(long long)j*prime[i]<=R;j++){
30             if((long long)j*prime[i]>=L)
31                 notPrime[j*prime[i]-L]= true;
32         }
33     }
34     prime2[0]=0;
35     for(int i = 0; i <= R-L; i++)
36         if(!notPrime[i])
37             prime2[++prime2[0]]=i+L;
38 }
39 int main(){
40     getPrime();
41     int a, b;
42     int _min, _max;
43     int x1, x2;
44     int y1, y2;
45     while(~scanf("%d %d",&a,&b)){
46         memset(prime2,0,sizeof(prime2));
47         getPrime2(a,b);
48         if( prime2[0]<2 ){
49             puts("There are no adjacent primes.");
50             continue;
51         }
52         _min = 1000000;
53         _max = 0;
54         for(int i=1; i<=(prime2[0]-1);i++){
55
56             if((prime2[i+1]-prime2[i])<_min){
57                 x1 = prime2[i];
58                 x2 = prime2[i+1];
59                 _min = x2-x1;
60             }
61             if((prime2[i+1]-prime2[i])>_max){
62                 y1 = prime2[i];
63                 y2 = prime2[i+1];
64                 _max = y2-y1;
65             }
66         }
67         printf("%d,%d are closest, %d,%d are most distant.\n",x1,x2,y1,y2);
68     }
69 }
时间: 2024-08-11 03:36:02

关于素数的那点小事儿的相关文章

一件大事儿与一些小事儿

前天晚上做了一件"大事"--核心业务系统数据库服务器迁移,用新采购的两台高配服务器代替原有的两台低配. 如果上面只是部署了数据库应用倒也好说. 两台主从复制,主库还好,从库呢,netstat一下监听的东西真不少!其他的业务包括(均要拆分走): web端合同数据实时备份 监控服务端 日志与行为收集服务端 此处是被忽略了的邮件发送客户端配置 也就是说除了要在新的服务器上部署新的系统(操作系统之前不统一,这次统一了),配置新版本的sql应用(升级为更新的稳定版),目录与用户管理重新做之外,还

方荡畀食几鞭噉嘅小事儿!波澜都唔带兴起一啲嘅

方荡呢边不过系一个细插曲,甚至乎小插曲都算唔上,喺呢座云镌丹炉之下,聚集住六万火奴,仲有几万喺其他地方抓获嘅奴隶,再加看管嘅军卒,近十万人,方荡畀食几鞭噉嘅小事儿!波澜都唔带兴起一啲嘅.喺云镌丹炉对面专竖立住一座同云镌丹炉一路高楼阁. http://bbs.elecfans.com/user/3345582/ 药督就可以喺火毒城之中打横走咗,即便系火毒城中嘅大小官员们撞到咗手持抄药舂嘅儿童,都得恭敬嘅称呼一声细药师.两个儿童其中一个双目狭长,身材匀称而强健,目光坚毅,内有宿慧光泽,一睇就只能够成

关于哲哲跳舞这件小事儿

前言 诗人 Stanis?aw_Jerzy_Lec 说过一句话:雪崩的时候,没有一片雪花是无辜的.哲哲的成长和每一位亲人都密切相关,今天我想谈谈关于哲哲跳舞这件小事儿. 初心 我们常常说一句话,叫做不忘初心,方得始终.做一件事情不要忘记了最初的目的是什么,既然叫做舞蹈兴趣学习班,那么重点就在"兴趣"和"学习",培养兴趣爱好作为一项软技能,让孩子感受到学习的乐趣,同时能够锻炼身体和开发智力,这是我们的初心.而一旦这种活动让孩子产生了逆反心理甚至是厌恶,那么这就和原来的

浅谈“观察者模式”那点小事儿

首先先了解一下什么是"观察者模式"? 所谓"观察者模式"又称"发布订阅模式",是以一对多的形式存在的:当一个物体方生变化的时候,会通知所有物体去接受这个事件.例如:当服务端发送消息的时候,会通知所有客户端的用户都会接受到这个消息. 官方一点来说:这是一种创建松散耦合代码的技术.它定义对象间 一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体

生活里一则有关敏捷的小事儿

房子下来后,最着急装修的事儿,原因有二.一,钱没着落:二,没时间事无巨细的过问,怕最后出来的效果不是自己想要的. 关于一,略过不记. 说说二. 当初负责装修的L,向我们提供了很多风格图片,最终选了一种,大致交代下屋子里哪个位置摆放什么东西,东西做成什么样的.就这样,离场,他们开工了. 每到一个阶段,他们都会拍照反馈进度和效果.并询问有没有什么想法或者意见.中途,由于几个重要的东西材料需要选择,所以,我们过去了几趟,其他时间,就是微信联系.我们做的都是选择题,做一些选择,偶尔搭配不合适的,他们给出

【生活中的小事儿】

仔细想想还是很有意思的,关于开学时发生的那两件事: 1.班里要评选助学金资格人选.班长及导员发表声明说这个大家应该好好在心里掂量掂量,把不多的名额让给那些真正需要的人,这里也只有本人心里在知道“真正”的含义吧. 2.导员发表声明说:班里统计下信息,关于寒暑假最火车回家这个事,上面要办相应的补助,也就是说火车票减半.导员让统计下需要办理此业务的学生人数.最开始一部分人没有办理,包括我.第二次,核实信息时,导员说,建议每个人都办此业务,不管你家是省外还是省内.其余没办理的人就都办了(谁会不办呢?),

说说健身这件小事儿

不知不觉,从工作到现在,将近两年,也持续坚持锻炼身体一年半的时间.与其说苦苦的坚持,倒不如说已经习惯于这样的健身运动. 客观来说,自己不是那种有运动天赋的人,几乎不会各种球类运动(稍稍会些乒乓球),曾经也没有一个好的运动习惯,偶尔的跑步便是学生时期的唯一运动项目了. 回想下,工作之后,为什么去尝试健身房呢? [1] 白天在电脑前枯燥的工作: [2] 帝都户外的空气,不说了: [3] 周围几乎没有高校,可提供跑步场地: [4] 年龄越来越大,身体也会不如以前: [5] 有时候,工作.感情压力还是很

HDU 4344 随机法判素数(费马小定理

#include <cstdio> #include <ctime> #include <cmath> #include <algorithm> using namespace std; typedef long long ll; const int N = 108; const int S = 10; ll mult_mod(ll a, ll b, ll c) { a %= c; b %= c; ll ret = 0; while(b) { if(b&am

hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)

题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3.                         (全题文末) 知识点: 整数n有种和分解方法. 费马小定理:p是质数,若p不能整除a,则 a^(p-1) ≡1(mod p).可利用费马小定理降素数幂. 当m为素数,(m必须是素数才能用费马小定理) a=2时.(a=2只是题中条件,a可以为其他值) mod m =  *      //  k=